コード例 #1
0
 def gpr_c(self):
     with vsc.foreach(self.gpr, idx=True) as i:
         self.gpr[i].not_inside(
             vsc.rangelist(self.sp, self.tp, self.scratch_reg, self.pmp_reg,
                           riscv_reg_t.ZERO, riscv_reg_t.RA,
                           riscv_reg_t.GP))
     vsc.unique(self.gpr)
コード例 #2
0
 def avail_regs_c(self):
     # TODO
     self.avail_regs.size == 10  # self.num_of_avail_regs
     vsc.unique(self.avail_regs)
     with vsc.foreach(self.avail_regs, idx=True) as i:
         self.avail_regs[i].not_inside(cfg.reserved_regs)
         self.avail_regs[i] != riscv_reg_t.ZERO
コード例 #3
0
            def ab_c(self):

                self.a != 0
                self.b != 0
                self.c != 0
                self.d != 0

                vsc.unique(self.a, self.b, self.c, self.d)
コード例 #4
0
            def reg_c(self):
                vsc.solve_order(self.num_of_regs, self.reg)
                self.reg.size == self.num_of_regs
                self.offset.size == self.num_of_regs

                with vsc.foreach(self.reg, idx=True) as i:
                    self.reg[i].not_inside(
                        vsc.rangelist(self.reserved_regs, reg_t.A))
                vsc.unique(self.reg)
コード例 #5
0
 def rs1_c(self):
     # TODO constraint size with num_of_rs1_reg
     vsc.solve_order(self.num_of_rs1_reg, self.rs1_reg)
     self.rs1_reg.size == 1  # self.num_of_rs1_reg
     self.offset.size == 1  # self.num_of_rs1_reg
     with vsc.foreach(self.rs1_reg, idx = True) as i:
         self.rs1_reg[i].not_inside(vsc.rangelist(cfg.reserved_regs,
                                                  self.reserved_rd, riscv_reg_t.ZERO))
     vsc.unique(self.rs1_reg)
コード例 #6
0
 def gpr_c(self):
     self.gpr0.not_inside(vsc.rangelist(self.sp, self.tp, self.scratch_reg, self.pmp_reg,
                                        riscv_reg_t.ZERO, riscv_reg_t.RA, riscv_reg_t.GP))
     self.gpr1.not_inside(vsc.rangelist(self.sp, self.tp, self.scratch_reg, self.pmp_reg,
                                        riscv_reg_t.ZERO, riscv_reg_t.RA, riscv_reg_t.GP))
     self.gpr2.not_inside(vsc.rangelist(self.sp, self.tp, self.scratch_reg, self.pmp_reg,
                                        riscv_reg_t.ZERO, riscv_reg_t.RA, riscv_reg_t.GP))
     self.gpr3.not_inside(vsc.rangelist(self.sp, self.tp, self.scratch_reg, self.pmp_reg,
                                        riscv_reg_t.ZERO, riscv_reg_t.RA, riscv_reg_t.GP))
     vsc.unique(self.gpr0, self.gpr1, self.gpr2, self.gpr3)
コード例 #7
0
 def randomize_avail_regs(self):
     if self.avail_regs.size > 0:
         try:
             with vsc.randomize_with(self.avail_regs):
                 vsc.unique(self.avail_regs)
                 self.avail_regs[0].inside(
                     vsc.rangelist(vsc.rng(riscv_reg_t.S0, riscv_reg_t.A5)))
                 with vsc.foreach(self.avail_regs, idx=True) as i:
                     self.avail_regs[i].not_inside(
                         vsc.rangelist(cfg.reserved_regs, self.reserved_rd))
         except Exception:
             logging.critical("Cannot randomize avail_regs")
             sys.exit(1)
コード例 #8
0
 def legal_loop_regs_c(self):
     self.num_of_nested_loop.inside(vsc.rangelist(1, 2))
     self.loop_limit_reg.size.inside(vsc.rangelist((1, 32)))
     self.loop_cnt_reg.size.inside(vsc.rangelist((1, 8)))
     vsc.solve_order(self.num_of_nested_loop, self.loop_cnt_reg)
     vsc.solve_order(self.num_of_nested_loop, self.loop_limit_reg)
     with vsc.foreach(self.loop_cnt_reg, idx=True) as i:
         self.loop_cnt_reg[i] != riscv_reg_t.ZERO
         with vsc.foreach(cfg.reserved_regs, idx=True) as j:
             self.loop_cnt_reg[i] != cfg.reserved_regs[j]
     with vsc.foreach(self.loop_limit_reg, idx=True) as i:
         with vsc.foreach(cfg.reserved_regs, idx=True) as j:
             self.loop_limit_reg[i] != cfg.reserved_regs[j]
     vsc.unique(self.loop_cnt_reg)
     vsc.unique(self.loop_limit_reg)
     self.loop_cnt_reg.size == self.num_of_nested_loop
     self.loop_limit_reg.size == self.num_of_nested_loop
コード例 #9
0
 def ab_c(self):
     vsc.unique(self.v1_1, self.v1_2, self.v1_3, self.v1_4,
                self.v1_5, self.v1_6, self.v1_7, self.v1_8,
                self.v1_9, self.v1_10, self.v1_11, self.v1_12,
                self.v1_13, self.v1_14, self.v1_15, self.v1_16)
     #                vsc.unique(self.v1_16, self.v2_1)
     vsc.unique(self.v2_1, self.v2_2, self.v2_3, self.v2_4,
                self.v2_5, self.v2_6, self.v2_7, self.v2_8,
                self.v2_9, self.v2_10, self.v2_11, self.v2_12,
                self.v2_13, self.v2_14, self.v2_15, self.v2_16)
     #                vsc.unique(self.v2_16, self.v3_1)
     vsc.unique(self.v3_1, self.v3_2, self.v3_3, self.v3_4,
                self.v3_5, self.v3_6, self.v3_7, self.v3_8,
                self.v3_9, self.v3_10, self.v3_11, self.v3_12,
                self.v3_13, self.v3_14, self.v3_15, self.v3_16)
     #                vsc.unique(self.v3_16, self.v4_1)
     vsc.unique(self.v4_1, self.v4_2, self.v4_3, self.v4_4,
                self.v4_5, self.v4_6, self.v4_7, self.v4_8,
                self.v4_9, self.v4_10, self.v4_11, self.v4_12,
                self.v4_13, self.v4_14, self.v4_15, self.v4_16)
コード例 #10
0
 def ab_c(self):
     with vsc.foreach(self.vals) as it:
         it < 64
     vsc.unique(self.vals)
コード例 #11
0
 def ab_c(self):
     vsc.unique(self.vals)
コード例 #12
0
 def a_c(self):
     vsc.unique(self.a, self.b, self.c)
コード例 #13
0
 def legel_c(self):
     vsc.unique(self.sub_program_id)
     with vsc.foreach(self.sub_program_id, idx=True) as i:
         self.sub_program_id[i] != self.program_id
コード例 #14
0
 def list_c(self):
     vsc.unique(self.selectedList)