SystemVerilog的:$大小的函数定义的参数... ...

K

korgull

Guest
嗨,好了,现在,我似乎已经解决我的问题找到一个长度的VHDL命令转换,我现在有一个问题的方式,我想用它。我想用美元大小的命令来定义变量在位宽。举例来说,我认为我能做到这一点... [代码]参数XH =($大小(X) - 1);参数厦门大学=($大小(X)/ 2);参数的XML =(($大小(X)/ 2) - 1); [/CODE]这样我就可以做到这一点:[代码] A1 = X [XH:厦门大学]; A0 = X [XML:0]; B1 = Y [XH:厦门大学; B0 = Y [XML:0] [/CODE]不幸的是,我不能在那里美元规模的命令,因为它告诉我,我有一个“非法操作数为常数表达式”此外,我需要的地方开始的“参数”代码,这是不是最理想的地方它为我想要做什么,因为我需要我的功能是递归。有没有办法,我可以建立一个方程定义的“X”和“Y”的位宽吗?或者它必须与参数语句定义。感谢
 
您使用的是哪个模拟器(Questasim,VCS中,或的Incisive)?有些模拟器不支持完整的SystemVerilog语言。元大小()的参数是在编译/拟定时间,我敢肯定。因此,美元的大小()的输出继承的常量/静态属性,但一些模拟器不承认这一点。不过,我可能会忽视的东西:)例如:[代码]参数位[2:0] STATE_A = 3'd0;参数位[2:0] STATE_B = 3'd1的typedef枚举位[2:0] {S_A = STATE_A,S_B = STATE_B} te_states; / / *在Ncsim 8.1编译错误/ /“。枚举值必须字面常量临时实施的限制”[/代码]上面的代码失败Ncsim 8.1,但编译Modelsim的罚款6.3,海滨临Aldec公司,Synopsys公司的VCS。 (耻辱Cadence的... ...)在您发布的例子,你尝试代入表达式“$大小(X)-1”直接在程序转让? [代码] A1 = X [($大小(X) - 1):(大小(X)/ 2 )];[/代码]
 
[报价= boardlanguage]在您发布的例子,你有没有尝试代入表达式“元大小(X)-1”内直接的程序分配? [代码] A1 = X [($大小(X) - 1):(大小(X)/ 2 )];[/代码] [/QUOTE]我与AMS模拟器使用Cadence的模拟环境。我试着用你的想法(好主意),但..它不工作。我的错误:A1 = X [($大小(X) - 1):(大小(X)/ 2)]; ---------------| ncvlog:* E ,NOTPAR(/ verilog.v,18 | 12):非法操作数为常数表达式[4协会(IEEE)]。
 

Welcome to EDABoard.com

Sponsor

Back
Top