增加sim cdr clk的生成python文件,支持在Makefile中动态生成相位和时钟偏差
This commit is contained in:
@@ -26,6 +26,7 @@ module SimCDRTb(
|
||||
forever begin #8000000 clock <= ~clock; end
|
||||
end
|
||||
|
||||
/*
|
||||
generate
|
||||
for( genvar i = 0; i < 16; i = i + 1 ) begin
|
||||
initial begin
|
||||
@@ -38,6 +39,9 @@ module SimCDRTb(
|
||||
end
|
||||
end
|
||||
endgenerate
|
||||
*/
|
||||
|
||||
`include "simCdrClk.vh"
|
||||
|
||||
reg [7:0] data;
|
||||
wire success;
|
||||
|
||||
52
tb/shinTest/gen_sim_cdr_clk.py
Executable file
52
tb/shinTest/gen_sim_cdr_clk.py
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python
|
||||
#encoding=utf-8
|
||||
import argparse
|
||||
from pyutils import *
|
||||
|
||||
|
||||
def set_cdr_clk(v_ph, v_t):
|
||||
ph = int(8 * 1000000 * (int(abs(v_ph))%360) / 360.0)
|
||||
period = int(1000000 + v_t)
|
||||
code_for_clk = __gen_clk(ph, period)
|
||||
|
||||
genPkt = GenPkt()
|
||||
genPkt.clean()
|
||||
gen_file_def = "simCdrClk"
|
||||
genPkt.addAfterExc(code_for_clk)
|
||||
genPkt.gen("./generated/SimCDR/%s.vh"%(gen_file_def, ), 1)
|
||||
|
||||
def __gen_clk(ph, period):
|
||||
slv_code =(
|
||||
""
|
||||
#"\tinitial begin\n"
|
||||
#+"\t\tforever begin #%d clock%d <= ~clock%d; end\n"%(period * 8, clk, clk)
|
||||
#+"\tend\n\n"
|
||||
|
||||
+"\tgenerate\n"
|
||||
+"\tfor( genvar i = 0; i < 16; i = i + 1 ) begin\n"
|
||||
+"\t\tinitial begin\n"
|
||||
+ "\t\t\t//相位信息\n"
|
||||
+ "\t\t\t#%d\n"%(ph)
|
||||
+ "\t\t\tmultiCLK[i] = 0;\n"
|
||||
+ "\t\t\tfor( integer j = 0; j < i; j = j + 1 ) begin\n"
|
||||
+ "\t\t\t\t#%d\n"%(period, )
|
||||
+ "\t\t\t\t;\n"
|
||||
+ "\t\t\tend\n"
|
||||
+ "\t\t\tforever begin #%d multiCLK[i] <= ~multiCLK[i]; end\n"%(period * 8, )
|
||||
+"\t\tend\n"
|
||||
+"\tend\n"
|
||||
+"\tendgenerate\n")
|
||||
|
||||
return slv_code
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
# 可选参数
|
||||
parser.add_argument("-c", "--clk", nargs=2, type=int, default=[0, 0], help="相位(度)、频率偏差ppm")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
set_cdr_clk(args.clk[0], args.clk[1]);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
16'h0306 8'h00 16'h0002 8'h8c 8'h00
|
||||
16'h1000 8'h00 16'h008c 8'h08 8'h80 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'hd0 8'h80 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00
|
||||
16'h0020 8'h00 16'h0001 8'h01
|
||||
16'h0800 8'h80 16'h008c 8'h08 8'h80 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'hd0 8'h80 8'h02 8'h01 8'h4c 8'h58 8'h50 8'h30 8'h30 8'h31 8'h55 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h3c 8'h31 8'h00 8'h80 8'h15 8'h05 8'h00 8'h00 8'hxx 8'h00 8'h00 8'h00 8'h00 8'h87 8'h87 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'hf0 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h10 8'h80 8'h00 8'h00 8'h00 8'h01
|
||||
16'h0800 8'h80 16'h008c 8'h08 8'h80 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'hd0 8'h80 8'h02 8'h01 8'h4c 8'h58 8'h50 8'h30 8'h30 8'h31 8'h55 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h3c 8'h31 8'h00 8'h80 8'h15 8'h05 8'h00 8'h00 8'hxx 8'h00 8'h00 8'h00 8'h00 8'h87 8'h87 8'h00 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'hf0 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h10 8'h80 8'h00 8'h00 8'h00 8'h01
|
||||
16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff
|
||||
16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff
|
||||
16'h007c 8'h00 16'h0002 8'h00 8'h81
|
||||
|
||||
Reference in New Issue
Block a user