描述
此答复记录描述了Vivado综合属性,dont_touch,full_case,gated_clock,shreg_extract,还提供了它们的编码示例。
编码示例附在此答复记录中。答案记录还包含与已知问题和良好编码实践相关的信息。
注意 :每个编码示例都可用于直接创建Vivado项目。
请参阅每个源文件中的标题,了解每个示例中涵盖的Synthesis属性。
解
DONT_TOUCH
dont_touch属性的工作方式与“keep”和“keep hierarchy”属性的工作方式相同。
其功能是防止信号或分层块的逻辑优化,并转发注释网表以进行布局和布线。
Verilog示例
(* dont_touch =“{true | false}”*)<signal_name>;
VHDL示例
属性dont_touch:string;
<signal_name>的属性dont_touch:signal是“{true | false}”;
FULL_CASE(仅限Verilog)
full_case属性可用于指示Vivado Synthesis在语句中指定了所有可能的值。
如果指定了大小写值,则Vivado Synthesis不会创建案例值的额外逻辑。该属性只能通过RTL控制。
Verilog示例
(* full_case *)
案例(SELECT)
3’b001:Q1 <= A [0];
3’b011:Q1 <= A [1];
3’b110:Q1 <= A [2];
ENDCASE
GATED_CLOCK
gated_clock属性的目的是将时钟门控逻辑转换为触发器使能。
这利用了触发器时钟使能和专用时钟路由。
Vivado综合允许转换门控时钟。用于执行此转换的两个项目是:
- GUI中的开关(-gated_clock_conversion),指示工具尝试转换。
- RTL属性,指示工具关于门控逻辑中的哪个信号是时钟。
Verilog示例
(* gated_clock =“{true | false}”*)输入clk_a;
VHDL示例
端口(clk_a:在STD_LOGIC中;
EN:在STD_LOGIC中;
…
最后;
建筑行为顶部是
signal gclk_a:STD_LOGIC;
属性gated_clock:string;
clk_a的属性gated_clock:signal是“{true | false}”;
gclk_a <= clk_a AND en;
SHREG_EXTRACT
shreg_extract属性允许Vivado Synthesis在适用时启用移位寄存器的提取。适用的值为“true”和“false”
Verilog示例
在注册前放置
(* shreg_extract =“{yes | no}”*)reg [n:0] <reg_name>;
VHDL示例
属性shreg_extract:string;
属性shreg_extract的shreg:signal是“{yes | no}”;
属性名称 | HDL文件 |
---|---|
dont_touch.zip |
|
full_case.zip |
|
gated_clock.zip |
|
shreg_extract.zip |
|
附件
相关附件
名称 | 文件大小 | 文件类型 |
---|---|---|
dont_touch.zip | 42 KB | 压缩 |
full_case.zip | 562字节 | 压缩 |
gated_clock.zip | 1 KB | 压缩 |
shreg_extract.zip | 36 KB | 压缩 |
没有回复内容