Added solution for some additional MMCM features Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
diff --git a/fuzzers/031-cmt-mmcm/generate.py b/fuzzers/031-cmt-mmcm/generate.py index 3784178..6b4e404 100644 --- a/fuzzers/031-cmt-mmcm/generate.py +++ b/fuzzers/031-cmt-mmcm/generate.py
@@ -35,6 +35,8 @@ ('RST', 1), ('PWRDWN', 1), ('CLKINSEL', 0), + ('PSEN', 1), + ('PSINCDEC', 1), ]: opt = 'IS_{}_INVERTED'.format(reg) @@ -130,6 +132,9 @@ # site, 'COMPENSATION.INTERNAL', # verilog.unquote(ps['COMPENSATION']) in ['INTERNAL']) + opt = (verilog.unquote(ps["SS_EN"]) == "TRUE") + segmk.add_site_tag(site, "SS_EN", opt) + for param in ['CLKFBOUT_MULT_F']: paramadj = int(ps[param]) bitstr = [int(x) for x in "{0:09b}".format(paramadj)[::-1]]
diff --git a/fuzzers/031-cmt-mmcm/top.py b/fuzzers/031-cmt-mmcm/top.py index 57eeef1..b88d464 100644 --- a/fuzzers/031-cmt-mmcm/top.py +++ b/fuzzers/031-cmt-mmcm/top.py
@@ -31,6 +31,13 @@ yield tile_name, tile_type, site_name +def gen_true_false(p): + if random.random() <= p: + return verilog.quote("TRUE") + else: + return verilog.quote("FALSE") + + def main(): sites = sorted(list(gen_sites())) max_sites = len(sites) @@ -100,6 +107,10 @@ random.randint(0, 1), "IS_CLKINSEL_INVERTED": random.randint(0, 1), + "IS_PSEN_INVERTED": + random.randint(0, 1), + "IS_PSINCDEC_INVERTED": + random.randint(0, 1), "CLKFBOUT_MULT_F": random.randint(2, 4), "CLKOUT0_DIVIDE_F": @@ -136,8 +147,14 @@ 'HIGH', 'LOW', ))), + "SS_EN": + gen_true_false(0.15), } + # SS_EN requires BANDWIDTH to be LOW + if verilog.unquote(params["SS_EN"]) == "TRUE": + params["BANDWIDTH"] = verilog.quote("LOW") + if verilog.unquote(params['COMPENSATION']) == 'ZHOLD': params['clkfbin_conn'] = random.choice( ( @@ -239,6 +256,8 @@ .IS_RST_INVERTED({IS_RST_INVERTED}), .IS_PWRDWN_INVERTED({IS_PWRDWN_INVERTED}), .IS_CLKINSEL_INVERTED({IS_CLKINSEL_INVERTED}), + .IS_PSEN_INVERTED({IS_PSEN_INVERTED}), + .IS_PSINCDEC_INVERTED({IS_PSINCDEC_INVERTED}), .CLKOUT0_DIVIDE_F({CLKOUT0_DIVIDE_F}), .CLKOUT1_DIVIDE({CLKOUT1_DIVIDE}), .CLKOUT2_DIVIDE({CLKOUT2_DIVIDE}), @@ -252,6 +271,7 @@ .CLKOUT0_DUTY_CYCLE({CLKOUT0_DUTY_CYCLE}), .COMPENSATION({COMPENSATION}), .BANDWIDTH({BANDWIDTH}), + .SS_EN({SS_EN}), .CLKIN1_PERIOD(10.0), .CLKIN2_PERIOD(10.0) ) pll_{site} (