mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import pytest
 | |
| from rtlil_cells import generate_test_cases
 | |
| import random
 | |
| 
 | |
| random_seed = random.getrandbits(32)
 | |
| 
 | |
| def pytest_configure(config):
 | |
|     config.addinivalue_line("markers", "smt: test uses smtlib/z3")
 | |
|     config.addinivalue_line("markers", "rkt: test uses racket/rosette")
 | |
| 
 | |
| def pytest_addoption(parser):
 | |
|     parser.addoption("--per-cell", type=int, default=None, help="run only N tests per cell")
 | |
|     parser.addoption("--steps", type=int, default=1000, help="run each test for N steps")
 | |
|     parser.addoption("--seed", type=int, default=random_seed, help="seed for random number generation, use random seed if unspecified")
 | |
| 
 | |
| def pytest_collection_finish(session):
 | |
|     print('random seed: {}'.format(session.config.getoption("seed")))
 | |
| 
 | |
| @pytest.fixture
 | |
| def num_steps(request):
 | |
|     return request.config.getoption("steps")
 | |
| 
 | |
| @pytest.fixture
 | |
| def rnd(request):
 | |
|     seed1 = request.config.getoption("seed")
 | |
|     return lambda seed2: random.Random('{}-{}'.format(seed1, seed2))
 | |
| 
 | |
| def pytest_generate_tests(metafunc):
 | |
|     if "cell" in metafunc.fixturenames:
 | |
|         per_cell = metafunc.config.getoption("per_cell", default=None)
 | |
|         seed1 = metafunc.config.getoption("seed")
 | |
|         rnd = lambda seed2: random.Random('{}-{}'.format(seed1, seed2))
 | |
|         names, cases = generate_test_cases(per_cell, rnd)
 | |
|         metafunc.parametrize("cell,parameters", cases, ids=names)
 |