请问这小段verilog代码可以综合吗
module c2 (rst,in0,in1,out);
input rst;
input in0;
input in1;
output out;
// synopsys translate_off
reg out;
always @(rst or in0 or in1)
begin
if (rst)
out = 0;
else if (in0 == in1)
out = in0;
end
// synopsys translate_on
endmodule
不清楚,你设置开关干嘛?
好像不完整会出锁存
“// synopsys translate_off” 和“// synopsys translate_on”之间的代码会被DC忽略掉.
always块中的组合逻辑形成锁存了!
那有没有办法实现这个代码的功能呢?如果用逻辑门(与,或,非)来搭建这个功能模块,其他的模块例化这个模块,并在DC综合的时候用set_dont_touch c2, 这样还会被DC忽略吗?
你把// synopsys translate_off 和 // synopsys translate_on這二行刪除,
應該就可以綜合了.
3ks楼上, 可以综合了,为什么去掉了// synopsys translate_off 和 // synopsys translate_on就能综合了呢?这两行对DC有什么作用呀?谢谢指教
明白了,谢谢各位的帮助
6# zhourong601
这两行就是综合指示语句,综合工具能够识别,然后根据指示进行综合
可以综合 但是可能会有锁存器之类的吧
if...else不完整,综合成锁存器了
66666666666666666666
楼上的那么有money,还这样灌水
LS还不是很多。
学习了
DC主要用于ASIC综合,这个代码也玩ASIC么?
对综合不是太了解,能解释一下// synopsys translate_off 和 // synopsys translate_on语句的意思吗?
为什么lz写纯组合逻辑还要加rst信号呢?
latch的确是有的
代码风格有问题的
需要改进
写法不好会导致很多问题的
最好按照标准风格写
这种会减少很多麻烦
hehe,这段代码是用于异步电路设计,所以需要产生锁存器
代码主要用于异步电路,所以需要controller的reset
学习了……嗯,那两句在DC里是忽略两句中间的内容而不加以综合的意思吧!
大哥,你写反了。
// synopsys translate_on
// synopsys translate_off
这样就不会有问题了!
组合逻辑不能忘写else
//synopsys translate_off 后DC不对直到_on内的verilog代码进行综合,所以当然得到的是空网表
else if (in0 == in1)
out = in0;
后面最好再写上else执行语句
不然这样很不严谨
