System verilog 组合逻辑的偏斜延迟建模
我需要帮助为不同的输入输出路径建模具有不同延迟的块System verilog 组合逻辑的偏斜延迟建模,system-verilog,System Verilog,我需要帮助为不同的输入输出路径建模具有不同延迟的块 input A; input [3:0] B, C; output [3:0] Y; Y=B xor C如果A=1,则Y=0 当posedge A(上升延迟)和NEGDEDGE A(下降延迟)时,延时分别为10us和5us 和B,C->Y延迟为1us(仅当A=1时适用) 对于我的情况,我可能需要使用过程方式,赋值语句可能不适合。对于不可合成的模型,您可以使用#延迟结构与`时间刻度到模型延迟'相结合。类似于下面的代码 `timescale 1u
input A;
input [3:0] B, C;
output [3:0] Y;
Y=B xor C如果A=1,则Y=0
当posedge A(上升延迟)和NEGDEDGE A(下降延迟)时,延时分别为10us和5us
和B,C->Y
延迟为1us(仅当A=1时适用)
对于我的情况,我可能需要使用过程方式,赋值语句可能不适合。对于不可合成的模型,您可以使用#延迟结构与`时间刻度到模型延迟'相结合。类似于下面的代码
`timescale 1us/1us
module delayModule(A,B,C,Y);
input A;
input [3:0] B, C; // this should probably be output
output [3:0] Y;
reg [3:0] tmpb, tmpy;
always @(posedge A)
#10us tmpb <= 1;
always @(negedge A)
#5us tmpb <= 0;
always @* begin
if (A == 1)
#1us tmpy =(B^C);
end
assign B = tmpb;
assign Y = tmpy;
endmodule // delayModule
时间刻度为1us/1us
模块延迟模块(A、B、C、Y);
输入A;
输入[3:0]B,C;//这可能是输出
输出[3:0]Y;
reg[3:0]tmpb,tmpy;
始终@(posedge A)
#10us tmpb这里有一些对我最有效的方法
`timescale 1us/1ns
module xor_w_enabled(input A, input B, input C, output Y);
wire A_delayed;
wire B_xor_C_delayed;
assign #1 B_xor_C_delayed = B^C;
assign #(10,5) A_delayed = A;
assign Y = (A_delayed == 1) ? B_xor_C_delayed : 0;
endmodule
如果我遗漏了什么,请告诉我。是针对可合成模型的吗?@Serge否,这不是针对可合成模型的。我不认为有像assign B=。。。B作为输入是否合法?有拼写错误吗?@VinayakBhat-Right,我认为应该是
输出
,可能是OP的拼写错误,但这是合法的。上面的工作可以在