數電和Verilog-宏定義
作者:由 馬哥的地盤 發表于 曲藝時間:2023-01-11
A。8 宏定義
`define 定義全域性引數
`define DATA_WIDTH 8
module
reg[`DATA_WIDTH-1:0] data; //這相當於定義 reg[7:0] data;
。。。
endmodule
`include 檔案包含
示例:
//檔案aaa。v
module aaa(a,b,out);
input a, b;
output out;
wire out;
assign out = a^b;
endmodule
//檔案 bbb。v
`include “aaa。v”
module bbb(c,d,e,out);
input c,d,e;
output out;
wire out_a;
wire out;
aaa aaa(。a(c),。b(d),。out(out_a));
assign out=e&out_a;
endmodule
`timescale 定義模擬時間單位和精度
上一節課我們講到過
`timescale 10ns/1ns
這裡置了時間單位是10ns,時間精度是1ns,除此之外還有以下時間單位可以使用:
`ifdef 條件編譯
透過宏名作為識別符號從而根據模擬時傳遞的編譯引數來選擇性編譯程式碼。比如在rtl的結尾定義一些檢查邏輯或者定義一些綜合邏輯並用編譯引數進行選擇性編譯,從而與其他程式碼進行區分來實現根據場景改變或增加程式碼的功能。
`ifdef 宏名 (識別符號)
程式段1
`elsif 宏名 (識別符號)
程式段2
`else
程式段3
`endif
公眾號:程式設計師Marshall