增加sim cdr clk的生成python文件,支持在Makefile中动态生成相位和时钟偏差
This commit is contained in:
@@ -25,7 +25,8 @@ module SimCDRTb(
|
|||||||
initial begin
|
initial begin
|
||||||
forever begin #8000000 clock <= ~clock; end
|
forever begin #8000000 clock <= ~clock; end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
/*
|
||||||
generate
|
generate
|
||||||
for( genvar i = 0; i < 16; i = i + 1 ) begin
|
for( genvar i = 0; i < 16; i = i + 1 ) begin
|
||||||
initial begin
|
initial begin
|
||||||
@@ -38,6 +39,9 @@ module SimCDRTb(
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
endgenerate
|
endgenerate
|
||||||
|
*/
|
||||||
|
|
||||||
|
`include "simCdrClk.vh"
|
||||||
|
|
||||||
reg [7:0] data;
|
reg [7:0] data;
|
||||||
wire success;
|
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'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'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'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'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
|
16'h007c 8'h00 16'h0002 8'h00 8'h81
|
||||||
|
|||||||
Reference in New Issue
Block a user