mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-12 20:18:20 +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.
33 lines
1,005 B
Python
Executable file
33 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()
|