mirror of
https://github.com/YosysHQ/yosys
synced 2025-10-24 00:14:36 +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()
|