Vhdl 是否允许初始化来自另一个信号的信号?

Vhdl 是否允许初始化来自另一个信号的信号?,vhdl,Vhdl,我有下面的VHDL仿真代码。这是一个基于OSVVM的时钟监视器验证IP的最小示例 library IEEE; use IEEE.std_logic_1164.all; entity clock_monitor is generic ( PERIOD_HIGH : time := 5 ns; PERIOD_LOW : time := 5 ns ); port ( Clock : in std_logic ); end entity; arch

我有下面的VHDL仿真代码。这是一个基于OSVVM的
时钟监视器
验证IP的最小示例

library IEEE;
use     IEEE.std_logic_1164.all;

entity clock_monitor is
  generic (
    PERIOD_HIGH : time := 5 ns;
    PERIOD_LOW  : time := 5 ns
  );
  port (
    Clock : in  std_logic
  );
end entity;

architecture vip of clock_monitor is
  signal ClockPeriodHigh    : time    := PERIOD_HIGH;
  signal ClockPeriodLow     : time    := PERIOD_LOW;

  signal Period             : time    := ClockPeriodHigh + ClockPeriodLow;
begin
  -- not relevant

end architecture;
该代码分析如下:

  • Riviera PRO 2018.2
  • GHDL 0.36-dev
  • ModelSim 10.5b
此代码导致ModelSim的学究模式出错:

**错误(可抑制):C:/Training/Git/RGB_LED/lib/Clock/src/Clock_监视器。vhdl(18):(vcom-1013)“Period”的初始值取决于信号“clockperiodhight”的值。
**错误(可抑制):C:/Training/Git/RGB_LED/lib/Clock/src/Clock_Monitor.vhdl(18):(vcom-1013)“Period”的初始值取决于信号“ClockPeriodLow”的值

你知道为什么模拟器会接受这一点,但在严格/迂腐模式下会被报告为错误吗

编辑:
用于使用ModelSim编译的代码行:

vcom -modelsimini modelsim.ini -2008 -explicit -pedanticerrors -rangecheck -work OSVVM_Clock C:/Training/Git/RGB_LED/lib/Clock/src/clock_Monitor.vhdl

这并不能直接回答您的问题,但您能否定义一个
常量周期:时间:=周期+周期+周期=低
并初始化
信号周期:时间:=周期
?@mkrieger1我现在使用常量是为了更符合标准,但我仍然想知道为什么一些工具会在该代码中看到问题。实际上,这两个通用参数被传递到复杂函数中。结果现在存储在常量中,并用于初始化三个信号。verror-“vcom消息#1013:在详细说明设计层次结构之后,才定义信号的值。禁止在声明性项中使用信号名称,因为在详细说明整个设计之前,该值是未定义的。[DOC:IEEE Std 1076-1993 VHDL LRM-12.3声明部分的详细说明][DOC:IEEE Std 1076-2008 VHDL LRM-14.4.1概述]“另请参见12.3.1.4/14.4.2.5对象声明,12.3.1声明的详细说明/14.4.2.1。Suppressible表示他们不同意其他供应商的解释/用法,但可以默许。请参见和