def test_constraints(self): project = Project() for constraints in self.project_constraints: project.add_constraints(constraints, flow='dummy_flow') constraints = project.get_constraints() self.assertEquals( len(constraints), len(self.project_constraints), msg='Incorrect number of constraints added to project.' ) self.assertTrue( len(constraints) > 0, msg='Not correctly tested as no constraints are present.' ) for idx in range(len(constraints)): self.assertEquals( constraints[idx].path, os.path.abspath(self.project_constraints[idx]), msg='Constraints path was incorrectly processed.' )
# The Project class provides an add_config or add_config_dict method. We use # the add_config_dict method here to load the config dictionary, you can set # individual configuration items using add_config. project.add_config_dict(**config) # Some unit tests have been written for the max_hold component and stored in # max_hold_tests.py. The Project class provides an 'add_unittest' method for # adding unit tests to the project, it expects a path to the unit test file. project.add_unittest('max_hold_tests.py') project.add_unittest('basic_unit_test.py') # The constraints are added to the project using the add_constraints method. # The optional 'flow' argument is used to explicitly identify which synthesis # flow the constraints are intended for (the default is to infer supported # flows from the file extension). project.add_constraints('max_hold.xdc', flow='vivado') project.add_constraints('max_hold.ucf', flow='ise') # Synthesis generics can be assigned via the add_generic command, in this # example we set the data_Width generic to 3: project.add_generic('data_width', 3) # Source files for the max_hold component are added to the project. The Project # 'add_file' method accepts a file path and library name, if no library is # specified it will default to 'work'. Other file attributes are available but # not covered in this example. project.add_file('max_hold.vhd', library='lib_max_hold') project.add_file('pkg_max_hold.vhd', library='lib_max_hold') # When adding the testbench file we supply a 'synthesise' attribute and set it # to 'False', this tells the synthesis tool not to try to synthesise this file.