mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	When a plugin is being loaded from Python source, the binding will be
available under
    import libyosys
That is unfortunately different from how a self-standing Python program
would import the Yosys interface, which is
    from pyosys import libyosys
Until that is made consistent, at least fix the example to have it
working as is.
		
	
			
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			1,005 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			1,005 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/python3
 | |
| 
 | |
| import libyosys as ys
 | |
| 
 | |
| import matplotlib.pyplot as plt
 | |
| import numpy as np
 | |
| 
 | |
| class CellStatsPass(ys.Pass):
 | |
| 
 | |
|     def __init__(self):
 | |
|         super().__init__("cell_stats", "Shows cell stats as plot")
 | |
| 
 | |
|     def py_help(self):
 | |
|         ys.log("This pass uses the matplotlib library to display cell stats\n")
 | |
| 
 | |
|     def py_execute(self, args, design):
 | |
|         ys.log_header(design, "Plotting cell stats\n")
 | |
|         cell_stats = {}
 | |
|         for module in design.selected_whole_modules_warn():
 | |
|             for cell in module.selected_cells():
 | |
|                 if cell.type.str() in cell_stats:
 | |
|                     cell_stats[cell.type.str()] += 1
 | |
|                 else:
 | |
|                     cell_stats[cell.type.str()] = 1
 | |
|         plt.bar(range(len(cell_stats)), height = list(cell_stats.values()),align='center')
 | |
|         plt.xticks(range(len(cell_stats)), list(cell_stats.keys()))
 | |
|         plt.show()
 | |
| 
 | |
|     def py_clear_flags(self):
 | |
|         ys.log("Clear Flags - CellStatsPass\n")
 | |
| 
 | |
| p = CellStatsPass()
 |