Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System verilog 什么应该';{默认值:';1}在系统verilog中做什么?_System Verilog - Fatal编程技术网

System verilog 什么应该';{默认值:';1}在系统verilog中做什么?

System verilog 什么应该';{默认值:';1}在系统verilog中做什么?,system-verilog,System Verilog,我有一个数组,我想初始化为所有1。为此,我使用了以下代码段: logic [15:0] memory [8]; always_ff @(posedge clk or posedge reset) begin if(reset) begin memory <= '{default:'1}; end else begin ... end end 逻辑[15:0]存储器[8]; 始终_ff@(posedge clk或posedge重置)开始

我有一个数组,我想初始化为所有1。为此,我使用了以下代码段:

logic [15:0] memory [8];
always_ff @(posedge clk or posedge reset) begin
   if(reset) begin
      memory <= '{default:'1};
   end
   else begin
      ...
   end  
end
逻辑[15:0]存储器[8];
始终_ff@(posedge clk或posedge重置)开始
如果(重置)开始

内存模拟器是正确的:
内存我肯定会运行一个等价性检查并模拟门,以确保合成不会像lint那样出错。仅供参考,Quartus中有一个bug,其中
默认值:'1
通常起作用,但是,如果您有嵌套结构,并且其中一个结构成员的文本使用了
'1
,则会弄乱赋值。@Greg出于好奇,您能举一个不可合成赋值模式的示例吗?或者您指的是工具支持。假设LRM没有定义任何构造是否可合成。例如,从LRM§10.9.2
struct{logic[7:0]a;位b;位符号[31:0]c;字符串s;}s2='{int:1,默认值:0,字符串:'}无法合成,因为
字符串
不可合成。理论上,可以合成以下内容,但不支持:LRM§10.9
integer i='{31:1、23:1、15:1、8:1,默认值:0}
struct{inta;struct{intb,C;}BC1,BC2;}ABC='{A:1,BC1:'{B:2,C:3},BC2:'{B:4,C:5}。大多数项目都尝试不在同一个分配中混合使用异步设置/重置。我不确定在测试台外一次性分配复杂的sturct在哪里是切实可行的。我认为你可以有效地执行
memory@Chiggs,那将非常好。我正在进行一个设计,它有一系列数组,任何简化语法的东西都值得赞赏。我会试试看。@Chiggs No dice:编译错误。它应该适用于压缩数组-我没有注意到您使用的是未压缩数组(我通常使用压缩数组)。。。使用Modelsim(未打包的阵列也会出现故障)。