Our next speaker is Christoph Alexander.
He is one of the authors of Nadja EDA.
This is going to be an interesting new take on EDA using Python.
So please give a warm welcome to Christoph.
Does everyone, yeah, it's so high everybody I'm Christoph.
So here in the EDA I'm going to talk about is not like KKK, the PCBDA, it's digital design
EDA like designing chips category.
So what we are trying here is let me introduce what we are doing.
So it's the Nadja EDA package itself is quite young, we just launched in December 2024.
And what we are chasing here is our simplification in the developments of EDA tools.
The first thing is instability.
So the package here is just a peepin-style Nadja EDA.
But also simplification in API, so net least browsing how to write algorithms to be able
to manipulate net least, so it can be P&R algorithms, physical implementation algorithms.
But also data mining, which is something that we are working on currently, so how
to interpret the different views that are used in EDA, net least view, timing view, physical
view, all those informations how to be able to collect them and then provide them to data
mining or AI engines.
So where we are in the flow currently, so photos of you, you know, the open source
EDA world, so we are at the net least level, so we take synthesized net least.
So your sister outputs photos, we know the tool, and we are currently interleaved between
your sister and open room.
We put a large accent on the scalability and performance, so we are coming initially
from a world where we have worked on very huge designs, so we want to be able to manage
the biggest designs, if they are available.
And we also emphasize high fidelity of the data, meaning when we take data as an input,
it can be very long or whatever data, we try to preserve everything that is in this data,
meaning that we don't take the data just as an input to algorithms and basically destroy
everything that those algorithms won't need, we really try to keep everything that is there.
One thing also that is possible with this tool today, it's already easier, so if you
want to edit net least easily, just to have small or big changes, but it's very convenient
for doing this.
So Naja IDEA is the type of Naja iceberg, Naja IDEA is launched in December, but there
is already quite things available in the Naja ecosystem, which is mostly a C++ ecosystem.
For instance, there is this tool, I won't get too much into details, but that is used
for netists, and mostly big netists optimization, in particular in the context where those
netists have been synthesized accurately, because there is pending optimizations in that case.
So this example here is the Megabomb design, which is RIS5 open source design, that is available,
that is around 4 million gates after synthesis.
And by applying that logical elimination or constant propagation on this netist, we are able
to remove 20% of the design in 15 minutes, so it's just to explain that I mean, we are
really working on doing that kind of thing efficiently.
But Naja IDEA is not, let's say just a Python export of the C++ classes, like simple
of wrapping, automatic wrapping, from C++ to Python.
It's really a layer where we try to simplify the complexity that is underlying C++ ecosystem
and try to present something and to take advantage of going to Python, to take advantage
of this sort of translation or export, and to take advantage of this to also simplify some
concepts.
So for instance, in C++, we can have multiple views of the design, like physical timing,
etc.
So we try to, we merge them in the Python thing.
Also when you have Yaki called netist, usually so you have the instantiation context, and
then you have an instance, in its context, in its Yaki called context.
So here we have only one instance object that is basically what could be called an
Yaki called context.
So there's a simplification of everything that is Yaki called traversal management.
One thing is if you modify an instance, so an instance here is an instance in its context,
so everything related to the unification of parents, parents, depending on is this instance
or a unique instance or is instantiation multiple times, so all this unification thing
will be managed automatically.
Same for term and net, so top terms, instance terms, all this is merged, thus mismanagement
or single bits, also this is simplified a lot, so you can connect, if there are multiple
bits or a single bit, this is simplified.
Then if I have something, I will talk about Equipotential, which is basically a transparency
archicorn net across the design, so just now some examples, so if you want basically
to load a design into this, so it's just a few lines, so we try to support the, let's say
the AZ-Cworld, which is more liberty and very large approach and from the FPGA world,
which usually does not have liberty, so we have an internal library of primitive, so
we spot exactly, and then you can dump the very large, so in that case some people that
have tried this archipice, because they think it's just some kind of textual tool,
because there isn't, if you don't do anything, the outputs will look a lot like the input,
and some people are also surprised, but it's, we keep the order, we keep, I don't know,
the pragmas in the file, we can really keep everything.
So now if you want to print the net list, in just a few lines, you can write that kind
of code, so it will just print all the hard key, but all the instances in the design,
each in the archical context, of course we can print whatever you want, this is just an example.
We also support visitors, so currently we have instance revisitor, which allows you to do
whatever to implement callbacks, so if you want to visit instances with filters and apply
some, some methods, some functions when you find those instances, you also have stop conditions
if you want to, okay, so this is another example where you can extract easily, very in a few
lines, the net list statistics, we are starting also to support for more complex statistics
and connection to those, to Python packages like pandas, but also PyTorch, so to have more
complex outputs, so this is just an example of the kind of thing you can get into, into
pandas with this report, and this, I know it's small, but this is just to show in, in
early lines, so this is a dead logical elimination of implemented in early lines, so this
will remove all the dead logic in your design, it's just to show that you can implement
that kind of algorithm and sketch it very easily, okay, so just now to explain what is the
difference between a net and an equipotential, so when you have, so it's a very simple example
here, you have three instances of the same model, and then here you have connectivity across
the hockey, so if you look at a net, they're all in their context, so here you have seven
nets, but now if you want to look at the connectivity flat without flattening, then you will
have the equipotential object that will allow you to, without any transformation in the inside
that, it's just some kind of visitor that virtually flattens and visits the hockey without
virtually flattened, so you can see the connectivity across the design like this and go
up and down, okay, so what are the next steps now, so we are working on adding physical
view, so to be able to make the connection between logical view and the physical implementation,
so we need to add the left-hand also, so we are working on this support, we are also working
on, so this is coming from different sources, sometimes those sources are not having the same
high hockey, usually the physical information is completely flat or has different high hockey
physical hockey, so we are working on making the connection also automatically when we load this,
and the idea is to be able to, our focus currently is how to, now that we have all this data
internally, that is really structured without any loss, to be able to transfer it to those AI
engines, yeah, thank you.
So any questions?
So as you are looking at transferring work flows, you're talking about potentially using these
sorts of data for programmatic output, how do you, how do you judge inside of, inside of
the, any type of feedback, is that something that you're depending on an external, an external
tool to provide you with that information, or are you able to have a, an analysis with
within the agenda that you have, the veracity that you would, would need to judge it,
you know, good, good or bad or better or worse, okay, so just to understand the question before
I repeat, are you talking about verification of, or qualifying, you mean in terms of quality
of transformation results, like if you tell, okay, about placements or, so, right, so it,
as your, your ongoing experiments here, you're, you're integrating, and, yeah, providing this,
this bi, bi-directional work with, with other, with other data flows, each of these have,
need potentially more, more information coming out, do you have a way of, of transferring
that, that information about whether or not the, the circuit that you have designed that you built
within innaja provides, what, you know, what, what would qualify that circuit as, as better,
as better or worse, like, where the metrics that you're able to, to provide out to these,
to these external tools? Okay, so, currently, we are really, I think we are not at this, at this
level until now, we are at the point just to, how to generate, just to reach out, let's say, okay,
so, how to generate data that is able to be transferred to those enzymes, even what will be
the first experiment, what kind of, and I mean, the first experiment will be what kind of
explanation of the data, those enzymes provide, like, if we provide, I don't know, different
placement for instance, or different, uh, nephyst transformations, um, yeah, but, yeah, now, the, the, the
feedback and how we qualify this feedback, this is completely open, apparently, I don't know if I
sort of, I'm a little bit related, which use cases do you envision in Python for instance?
But, Python, which use cases you think would be? So, there, so there are already some public
experiments on, on this, but one is related to, uh, place and route, yeah, so, uh, but for this,
you need the, uh, RTL, you need the net list, and then you need also to, some kind of, uh, photographic,
or a physical, uh, view of the placement to be able to train like this. Now, it, it will this be,
useful for, uh, floor planning, uh, placement, routing, this is completely, uh, well,
not completely open because there's already some public experiments on this, but, uh, this is
really something that is growing us in, uh, experimental, uh, field.
Okay, thank you very much, Crystal.