举例module代码:
module design_top(clk, A, B, C, D, E,rst_n);
input clk, A, B, rst_n;
output reg C, D, E;
reg temp_a ;
reg temp_b ;
always @(posedge clk or negedge rst_n)
begin
if (rst_n == 1'b0) begin
temp_a <= #1 1'b0;
end
else begin
temp_a <= #1 A;
end
end
always @(posedge clk or negedge rst_n)
begin
if (rst_n == 1'b0) begin
temp_b <= #1 1'b0;
end
else begin
temp_b <= #1 B;
end
end
always @(posedge clk or negedge rst_n)
begin
if (rst_n == 1'b0) begin
C <= #1 1'b0;
end
else begin
C <= #1 temp_a&temp_b;
end
end
always @(posedge clk or negedge rst_n)
begin
if (rst_n == 1'b0) begin
D <= #1 1'b1;
end
else begin
D <= #1 temp_a|temp_b;
end
end
always @(posedge clk or negedge rst_n)
begin
if (rst_n == 1'b0) begin
E <= #1 1'b1;
end
else begin
E <= #1 temp_a^temp_b;
end
end
endmodule
我们要实现将输入输出register全部放入IOB当中:
约束如下:
INST "temp_a" IOB = TRUE; 输入
INST "temp_b" IOB = TRUE; 输入
INST "C" IOB = TRUE; 输出
INST "D" IOB = TRUE; 输出
INST "E" IOB = TRUE; 输出
如果不想放入IOB中,很简单就是 IOB=FALSE。
注意这些关键字都是要大写,建议对每个输入和输出的寄存器都要进行IOB register的约束。
一般情况如果输入信号进入FPGA后直接是组合逻辑,或者输出信号由组合逻辑产生,那么不允许IOB = TRUE;
如果需要IOB = TRUE;建议修改设计代码。
当然具体问题要具体分析,这里不一一列举。