这个代码无法综合的原因
时间:10-02
整理:3721RD
点击:
module testtime(IN1,STP1,STP2,OUT);
time TimeA;
input IN1;
wire IN1;
input STP1;
input STP2;
output [1:0]OUT;
reg [1:0]OUT;
parameter Width = 30;
always @( posedge IN1 )
begin
if (STP1& STP2)
begin
TimeA = $time ;
@( negedge IN1 ); // 我综合的时候就说这一句话有错误 不知道是不是这种写法不能被综合 ?
if (($time - TimeA) > Width) //这一句话是什么意思了?
begin
OUT=2'b00;
end
else
begin
OUT=2'b01;
end
end
else
begin
OUT=2'b11;
end
end
//}} End of automatically maintained section
// -- Enter your statements here -- //
endmodule
time TimeA;
input IN1;
wire IN1;
input STP1;
input STP2;
output [1:0]OUT;
reg [1:0]OUT;
parameter Width = 30;
always @( posedge IN1 )
begin
if (STP1& STP2)
begin
TimeA = $time ;
@( negedge IN1 ); // 我综合的时候就说这一句话有错误 不知道是不是这种写法不能被综合 ?
if (($time - TimeA) > Width) //这一句话是什么意思了?
begin
OUT=2'b00;
end
else
begin
OUT=2'b01;
end
end
else
begin
OUT=2'b11;
end
end
//}} End of automatically maintained section
// -- Enter your statements here -- //
endmodule
@( negedge DISC ); // 我综合的时候就说这一句话有错误 不知道是不是这种写法不能被综合 ?
显然是因为这个
大哥,基本概念要明白
综合器只是给你干体力活的,它能识别的代码只是你见过的一个子集
比如: @(----) , time类型 等,你要能综合就有鬼了
我是才开始学习的
就拿别人写的代码来恶补 所以很多东西都不太清楚 书上也找不到可以参考的地方 就只有发帖问大家了 谢谢楼上的
這代碼頂多只能拿來跑跑模擬
要拿來綜合肯定是不行的
這代碼比較像behavier code,不是RTL code
要想綜合,可能要寫成RTL code的方式
晕,第一次看到提这个问题的,
能中和的时许器件的写法有一个严格的格式要求
我粗统计有4中
同期rst
同期rst 加enable
非同期rst
非同期rst + enable
楼上很正确!可综合的代码其实是Verilog的一个子集!
时间是不可综合地
看看
语法和可综合性有很大的差别
太随意了,有些工具很牛,但不是做综合的,综合工具要处理的东西太多了,没有去考虑代码乱写的问题
了解点数字电路概念吧。
要认真学习可综合rtl风格
这个不是说的时间吧,是上升沿的时候对下降沿操作了吧
不大明白噢
不大明白,不知道matlab自动生成的code是不是可以综合的呢?
