Dear viewer, these subtitles were generated by a machine via the service Trint and therefore are (very) buggy. If you are capable, please help us to create good quality subtitles: https://c3subtitles.de/talk/117 Thanks!
Good evening, humans.
Today, I bring you Kirsten Becker, who
last year gave a crash course here
on FPGA and
figured out the that's actually pretty
hard to explain to people and put
in the work to make it easier.
Enjoy.
My name is Carson.
Oh, I forgot an introduction slide, but
my name is Carson.
I'm a part time scientist working
on a mission to the Moon, and I'm also
a Ph.D. candidate at the Tea
Handbook, and as such, I'm
I'm researching on FPGA architectures.
And one of the things that annoyed me the
most when I was starting
to work was FPGA architectures is
that there is no proper input language.
I this is what I claim here.
I basically say that video
and very log, which are the two most
common languages which are used for
programing FPGA are
are very hard to learn or
just a quick quote.
Who have you has ever programs and FPGA?
And that's good.
Who of you really enjoys programing
and you hate it?
Who have you enjoyed programing in?
Very long?
Hey, there's one guy.
OK, too.
OK, so I guess you
kind of agree that.
Video and VIDEO Look, I'm not the best
languages for programing
languages or, in my opinion,
also, the tools are very
hard to use or confusing,
to be more precise as they are.
You know, it looks like a space shuttle
cockpit and it should not be.
Look, it should not look like this should
be much simpler.
And so
what I want to do is I want to bring
the simplicity of Arduino to the world
of FPGAs, and I developed
quite a bit, but I
want to show you today.
So the primary goal that I had,
by the way, I invented
the language that I call PSR HDL,
which stands for plain, simple
description language.
So it's really aimed at people that
know, see so that
they can read and understand what it's
doing.
But it has the semantics of
a very visual and very loud, but
without the fucking ugliness the
other languages bring with them.
So I wanted to have
their own solution. People should be able
to get started in like no
time, which is like the
exact opposite of all the people that
were at my workshop like yesterday
that they don't loaded the six
year but file for exciting things.
Then they installed one,
which took like 20 could you would have
had to space.
And on the Linux machine, it
almost works then.
So this is not what I'm aiming
for. I really want to have people
to be able to download something,
get started very quickly
and get to the success very quickly.
And it should be easy to learn
and should be user friendly was
with error messages that are actually
understandable by humans, which
is a very hard thing to do and
is not not quite
there yet. But I think it's doing much
better than than what
some of the video tools are doing
other in.
But it's important.
Well, I'm just going to show you that I
chose a new language.
I don't want you to think about
as I'm going to think about it as
just the new language.
It's really the foundation of building
much simpler tools for programing
languages.
It's an open source, free
environment, and I want you to
take a look at this if you like it.
You know you can.
You can contribute to it.
That would be very awesome.
And I think that the possibilities
that it opens up are
are very good because it is you don't
need to hack into the source, but you
can. There are several extension points
where you can hook into.
So I want to create a new collaborative
community where people, you know, are
like supporting each other very, very
nice tutorials to get started with,
with programing languages.
So
it may sound crazy to some of the people
you know that's coming from the idea
industry that that you could
actually use a browser as
an integrated development environment.
But what I'm going to show you,
I think kind of kind of fulfills
that. It was very powerful
from an editing perspective.
It has our marketing on save
and which is more than you can
say for any other exciting
tools.
And even it
invites collaboration because
if you have a problem with some source
code, you just point around the
URL and you can get
help by whoever
you send the address to.
Hopefully, he knows it's there.
That would be very helpful.
Yeah. And so most of the time.
I will give a demo because I think
seeing is believing and I hope
it works. Yesterday, it didn't work so
well, but I hope today it
goes better.
So
this is good.
Mm hmm.
OK.
So what are you? Are starting with this?
You have you have a book space.
I can. I can make it.
So you have
a website here.
One more. Oh, this very daring.
OK, so it doesn't scale very well with
your eyes at some point as we might break
and I have to go back. But.
So the first thing that that you invited
was this is a top where you can learn
about it.
It gives you a very quick introduction
into the language
and make some very simple stuff.
And the next step
that you want to do before you are going
to create some code is you're
going to create a workspace.
The workspace is like the
container for the files that you are
working on and the
email address. It doesn't really matter
what you're entering here.
It's just that, you know, in case
my server goes up into smoke or I do
something that is incredibly
uncomfortable with your files, then
I might notify you that your files
might be lost or something
if you're not interested in that and just
enter whatever you want.
I will not be able to give it to the NSA
or something.
Um, so
I can't spell my name for record.
So no, you have a workspace.
And you can, for example,
create a new file and
you are greeted with an example.
And this example of this is just, you
know, adding everything to make it
a bit more bigger.
I guess so.
Um.
Maybe one what not.
OK.
So if this, for example, this is
a very simple module, which
is called my first module and it contains
the register, which is called some.
And it's an unsigned integer which
has a list of 12
bits and it has
two inputs which are called A and B,
and it's adding them.
So yeah, you're going to save that
as a file and then you have a file.
What's also interesting is you have some
nice examples here where you can see how
your modulates, for example,
a home.
You see, those two things are if you
would see the video code, I can actually
show you the code.
You know, then you see that this is
really much shorter than anything that
that you want to write in.
VIDEO So.
And this this
button here, for example, I can
I can generate video code,
which is what you want to
put into your synthesis tools
then.
And
so you see the video code here.
You know this. Remember, this is like
three lines and it's still in.
It's twenty eight and video
and it doesn't make the
same mistakes that the students are
doing that I have at my university,
for example.
You know, if you know, if you still, you
know, are very look, it's actually quite
the same. There is a sensitivity list,
and if you fucked it up, then the
simulation is not the same as what you
get on the hardware.
And this is very confusing.
And so when you're using
ratio, this will not be an issue
for you and the wrong
looks a bit different like this.
So you can download the files manually or
can download the files as a zip file.
This is not too exciting yet,
but what's very interesting about
this idea is that you can actually
compilers to another
language like C Java
or JavaScript.
And what that means is that I can
actually run a simulation in the browser.
And so what I'm doing
here is I'm
I'm generating that code,
which is like something like JavaScript.
But I hate JavaScript as much as I hate
videos. So
I use that for this.
And why isn't showing up?
It's not cool.
Hmm. Let's try this again.
That doesn't work.
Man, does that work well?
Yes, I do.
OK.
I will just use
the browser version.
So this is this is where you can
find the website online
right now. I call it, I call it
the beta because
it has some bugs from time to time.
Yeah.
Yeah, it would be better in a minute like
this.
So just do this
again, again
and again.
And so the way it works is generating the
dot code and then on the server,
it is compiling the article to
JavaScript, which unfortunately it takes
like three and a half seconds.
There is not much I can do about this,
but if you're using dashtam or dart,
then the time, Oh, I know what the
problem is.
I just. Oh hmm.
Anyway, so
here you have a simulation and
you can have some simple inputs.
You know, like, for example,
you know, this code was heading in
B and obviously you have some
inputs A and B here as well.
And you can, you know, you can run
it. And I can say, for example,
five and I can say
six and just see
that the result is 11.
And so, yeah, that is
running in the browser.
And if it's if it's running,
the fun thing about running in
the browser is that if you're using
dodgem, which is which is like
the dot version of Chrome,
then it's actually just as fast
as Isam from Sailing's.
So. So
although this has some funky.
You can you can display a list.
So let me let me do something.
Although, for example, I want to make a
look and let me make a
counter and let some.
Let's bring some of these because this
is the first thing everyone does.
And so what I'm saying here is I'm
just. Instead of video you have
you have like a process and you're saying
if there is a rising edge, then do this
as to that.
And so on and in
you just say this variable
is going to be a register, which
is clear and there's and
there is also no way to describe it.
And so those of you
in positions or so for
those of you that are suffering from
from lectures in your design,
you don't have those and feel
and let's make it a you and
and call it 70.
But uh, but and
let's say it's kind of +1.
So what I described to you is basically
a a 17 bit
unsigned integer that is a counter that
is incremented every time there's a
rising edge.
If you don't like the rising edge, you
can specify like, I have to
check the documentation. There's
documentation button by you there.
You can specify whatever you want.
You can say, OK, look, it's equals
falling.
Um,
like, uh, like
this. Like, this is failing.
And uh, but I
don't like that too much.
So the default configuration is that you
have a rising edge and
a synchronous resets, and those signals
are automatically added to your design.
And then we create an LCD
and we say control and
we take the No.
This is a good process or we can take the
settings. But if you're using Firefox,
use eight.
Four, oh, you can say
the reasons why you you mean you could
say reset value
is five like this,
but without the eye, but
you look
OK now.
So we are taking the counter and
we converted to Dot and JavaScript.
And I really hope that you are not.
Oh no, you're not perfect.
So, oh, this is blinking very fast.
Can I see it? Yes.
So there you go. You're blinking it up in
no time.
And of course, you can compile it to a
video and
just see your quote here, it
automatically generated the clock and
resource research input for you.
And by default, listing on
the rising edge synchronous active high
reset and
initializing to zero.
So let me get back to my slides.
Well, my sister.
So I hope that kind
of convince you that, except for the
Bucks, the brother is a very
good idea.
You can do simulation and you
can even add some of
your extensions, for example.
Something that I would be interested in
is have a couple of custom viz..
Instead of having just a blinking Aldi,
have some of a
Asians with like a CPU where you can see
the registers in there and something like
this because this is JavaScript, you can
do like anything you want.
But I also want to also
want to create a new hardware platform
because I think that, you know, if
you're going to start anew with something
you need to have or you need to have an
FPGA, Avery can download data do.
And it should be fun.
You know, blinking ideas are always fun,
especially if they AGP.
And it should also be, you know,
some kind of challenging.
And so what I created is, like
this piece here, I'm going to hang it
like here and.
Tara, are blinking, hopefully, is it?
Yes.
We need research
like this.
Well, this is good.
I want to have this.
So there you have your blinking
algae is also making a good Christmas
tree.
So I wanted to have a really simple
design, and this was the first one that
was done by both port.
He was making beautiful pieces, but
unfortunately it didn't work out because
his software is using Inkscape for
designing all the the bolts.
And then it's compiling together
with wood with Python.
So if you're if you're interested
in in other ways of creating
PCBs, then you should definitely take a
look at this.
But it doesn't support for us, so
we couldn't use it for the the board.
So this is the basically the board that
we created.
There are like forums and
on this forums, stories on each there is
like four biology so that you can blink
and all kind of different colors.
And the funny thing is that you can
actually stack two of those, both
together in 45 degree angle,
so you can vertically stack them
and you can horizontally stick them
together to create kind of network.
So, for example, you can recreate simple
games where you can, you know, you push a
button on one and then it's traveling
across the arms to
the signals, traveling across the arms to
other FPGA bots do something
like this. So I wanted to really
give the opportunity to to have some
fun with the bots without doing actually
some some useful.
Yeah. Realized losses, but by SMB
technologies is a good friend of mine,
and he put really a lot of effort
into designing the bot and rehearsal
time. So I want to thank him here.
And so the platform, that's an
actual 250.
Yeah, you can read about it.
It's programed from an angle, which is
kind of interesting.
You have some space on there.
So if you want to put some data
to from the make out to
the actual, you can do that as well.
And yeah, it does.
You have like 60 miles that you can
access from the headers and there are
like four parts which you can see the the
the four arms and there are two vertical
ports and five.
I always go to the X.
We you can do a spy for
from the from your PC
to it and you have some push buttons.
And yeah, and the
bot, the default arm has like four
edge abilities and the pin has
two connectors.
And so the thing is,
I want to I want to sell
it for, like, really cheap. So if you're
interested in having something like this,
it should be around.
So use and the more people that have
very, you know, so the experience and
the more people are interested in, the
more I can go.
I can make X go near zero.
So.
Yeah.
That would be that would be that would be
really awesome if I could reach twenty
nine.
This is what I wanted to say with a
straight line.
Yeah, no.
Um, so
but this is not
all I want to show.
So, OK, now you
wrote your really nice program.
And you obviously
want to get it running on your
on your FPGA and the zingers
that I'm using
to make and I'm not ashamed of it.
But the it's
not it's not like any a window actually
supports macOS X
with their tools, which I think is, like,
really a shame.
And
so what I did is, you
know, you can actually program your FPGA
from the web. You are
like, Oh, how does it look?
OK, so the magic trick
I'm pulling here is
the troops are still running on
on some Windows or
Linux servers or in the background,
there's my Windows
and there is this there is a tool called
local Hip-Hop, which is pulling all
the modifications that you're doing.
And the buck I had yesterday is fixed.
It's pulling all the modifications from
the they're doing to your workspace until
the local disk.
And when I'm calling
synthesis from from
the web interface, actually what it is
doing is, oh, the
speaker before me forgot his phone,
I would just move.
He was called.
Probably wasn't important.
Well, you know, there it
is.
Thanks for taking the time because
it takes a long time for the synthesis to
run through.
OK, so so what
this is doing is you're
compiling your code to video
and the local airport
is pulling down the video files.
It is in general.
It is then generating all the other files
that it needs, like a project file and
the pin constraint file.
And then it is calling the
synthesis tool.
And once it is done with it,
it uploads the resulting
dot dot file in this case,
back to the server and
then
I need just for some time.
Yeah, unfortunately, this is
looking slower than it was in
at home because it's using some of the
others.
So, yeah, you can.
You can look at the look will.
You can look at the the output that
generated, you know, what's
what resources it took, and
you can take a look at the look at log
fire if you're interested in that.
You know, it looks like this.
It says something strange, like I'm
quoting here, but this is not very
user friendly and I have to I have to
find some ways to
make some sense out of that to really
give back the errors that are generated
during synthesis, which may occur
because and because I cannot detect
them. Because if you, for example, if you
do something useless and and
the truth figures it out and optimize it
away and Wednesday's events, when it
optimizes something away, then
it will give you a warning.
And yeah, and so on.
So and there is
a second local help out
there have a really nice grid for it
already. Not, not really nice, but nice.
And this one knows
that there is this port
attached to left to
see you would be modem and
what I can do, you know,
I can program it.
I can start the program.
I can tell it to download the exact
configuration that file
down to the FPGA.
And there might be
some change happening to
the blinking stair.
Maybe I forgot if I change something, if
I change something, but it was.
What does the court actually say?
Yeah, OK. It's uh.
Did I change something?
Oh no, it's it's the same program, so you
won't see anything?
Not really.
OK. This doesn't make a difference.
So let's.
Let's leave
it
there. Yeah.
This is because the reset button is not
working, probably.
Probably right now.
Not at all.
Well, it's my
to my defense. I have to say that
what I'm going to show you here is like
really cutting edge and cutting edge.
I mean, I just finished it like last
week, and
let's read with all the stuff again.
But in the meantime, maybe I should
do something else or it's just a minute.
Hmm. Oh no, I can.
Hmm. No, I will continue with our
presentation and
just wait a second.
So you
may think that, you know, this is like a
really nice toy for the little kids,
but it also has
some features that I think are really
interesting for for people that are doing
serious work with us.
So for example, if you're into,
um, into
image processing, then you
always have the problem that you have to
have big data that you want to run
through your design to
to verify that it's working as
expected.
So let me just
quickly know it's not about
me.
Come on.
Yeah, so.
And what that tells you is that
you can you can transform
HBO to
to a language like C, C++, Java
and Dot.
And you know, those are sequential
languages, you know?
And but it shows the power of language.
So this is
really fast, like, really, really,
really fast. I think, you know, it's
probably faster simulator that you can
get right now on the market.
It's also generating some neutral
platform neutral bytecode.
So there is a virtual machine,
and you can hook in to that by creating
an interpreter if you're into and do
that.
And also, you can bet some
domain specific languages,
which I think is a really cool thing.
But before I continue here, this should
be done here.
OK, so let me reconfigure this.
And yeah, so
the way it works is, do you have your
HDL code?
And from that, I'm driving an HDL model,
which is process oriented and so I can
output video code.
So the piece of code
and the code there are like
they kind of look alike, but you know,
the show does
consume significantly as lines of code.
And from that, I'm generating a
sequential model, which you can then
output to the byte code and run
it through an interpreter. Or you can
directly generate native
code like Java Dot or whatever.
Not let me.
Did its research?
Oh, yeah. Much smoother.
So, no, it's you know, I wanted to
show you that you can I.
I slow down the speeds and now it's
fading across the colors much more
smoothly.
So, yeah.
Yeah, so how far is the simulation so
notice that this is a logarithmic
scale?
Crystal Zoom is like the fastest
HDL simulator that is commercially
available.
Isom, which is like the Queen
one is it's like the
the free tool that you're getting this
exciting and
the dark blue bar
that you can see is screwed
generated from steel.
And you can see that between crystals
and to each of those two orders of
magnitude in between and
between Isom.
And actually there are also
three orders of magnitude.
So I think this is pretty darn
impressive.
Hmm.
So the way it works and
when you're doing surveys which show
simulation is like you're
you're having your model,
for example, you want to create an MP
for compression
algorithm and you're
you have a reference implementation and
see and you're generating some
data and you fit that into your
test bench, which then is executed by
some tool like isam crystals and or
whatever. And you get some output data
and then you compare those two in your
and you hope that those are the same.
But and you
can actually embed your generated
native code into your application.
And
let me give you a quick demo of this.
So one of the examples that
that it had
was that, for example, I wanted to
to develop a camera IP
call that is scaling down
the image from a camera.
The results are two thousand forty
2048 by two thousand forty eight pictures
that are coming in via, isn't it?
Um, right now there's the camera
attached, so I use a still image,
but those are two thousand four forty
eight by 2048 pixels
and I'm scaling those down
by by some time.
Um, and the
what what you could see here when I was
checking DBA is that the
call was was
computing the downscaled version.
And if
you would run through this through
through Isam, then it would have taken
like a
much longer.
Um yeah, like a few,
like tens of seconds to
to do to scale this image,
but then you can do it like
instantaneous.
But what's even more neat, I
find, is, for example, the the image
looks a bit bright.
So if I change some code here,
then recompiled suppose
if you looked at the Java code loads
during the runtime and
updates, the image was the new piece
of code.
And so you can finally,
you can start, you can start
developing hardware
like you're used to develop software
by trying error.
Um.
So this is really a significant
speed up that you can achieve here,
and I also think that
it's quite quite nice to use
another interesting feature.
And
one of the when I'm
when I'm working on our rover, we have
we have a board where there's a
power PC embedded into the FPGA.
And so we have always the problem
that we need to attach some
some IP code to the CPU
and we need, for example, a modulator
for the pulse was modulation of the
motors, and we need to attach that to
the CPU and
how this usually works as you are
clicking and clicking and clicking and
editing and figuring and editing.
But in peace issue, there is something
much neater, too much
nicer way to do it.
And this is by
embedding another language.
So in this issue, you can say I want
to define my own language
and what you can see between
the what is the code
behind to generate plb?
And before the closing bracket of it,
this is a language is a configuration
language where I'm describing
a memory layout.
The one that you can see on the right
where you have like it's
offset zero in the memory.
You have like a register either and
bizarro and offset four.
You have the results.
And actually, the only lines that you
care about are are
the three lines at the bottom,
which is where you are.
Your function is because it's aging.
It's adding a plus b and
putting it to results
from a CPU perspective.
You could you write your data to
offset zero and you read it back from
from four.
And what it does is
it not just generates you all the
infrastructure code that you need,
there's an empty file.
If I
was, there's many files that are
generated by it
and it's generating all of that for
you.
And yeah, it's
generating your file
where you can see where your memory stuff
is.
And it's also generating you some,
some C code.
And the funny thing is, if
you're using this, if you're using the
C code, did that really put a demo
in a way?
Oh, OK. I have to do that.
I'm a bit afraid
I will do
something different.
Know this is hard.
OK.
So let's take a look at the example.
And here's an example
of that. No, this is not.
Here's an example that
I was showing you.
Um, let me just remove
that.
Let's give it a name
and put this into full screen
so you can see something.
And let's compile this,
and what you can see is,
you know, it's generating this is the
video called, by the way that it
generates.
This is the bus decode logic that
you need to
to access the register from a CPU
in video.
And it goes on and goes on,
goes on. You know, it's like one of the
sixty five lines of code.
And that's not all you need
another video five, which is like,
uh, 400 to two lines
as well, and
is also generating some strange
files like the MPD file
and the purifier.
All those files you need to
to program actually the
UM, the
IP core into your design
and what it shows.
What's generating for you is those
what I just showed you that
the HDMI l file
that you can see where all the stuff is.
And some some
helper methods very can
get head of files
for calling such input
direct.
And
yeah, you can set, for example, your A
and B, and you can
with a get you can read your results
and it's doing some some validation,
whether you're accessing something that
is not not within the range
of what you specified.
And it also generates you
some,
you know, some existing methods for it.
OK, let's do this.
Uh, those sectors.
Um, let's go to the actually
back door such workspace.
That's OK.
And compiled
to see.
Oh, I
know I know why
there is a do.
So it generated the two files
for me, the the
the one that was just showing to you.
And it also generated a fire
that is cold, bitter cold, the
encapsulation and
what this does look,
it's not working as the pictures.
OK,
well, we just don't know
the results.
And in the similar capitulation, you can
you can actually run the
the and sell off.
So let's step
back up first.
So when you're when you would do it,
ordinarily you would have to
concede,
Yeah, if you do an ordinary, you would
have to create an exciting
platform studio project and that project
you would have to need.
You would need to import the IP court
after you imported a picture.
You can then synthesize
it. You have to write some code and
and so on. And
all of this gets gets
very annoying. And if you're
if you want to change something, it takes
about two minutes before you can actually
are changing some C code
and you want to show the
you want to see the change that is
introduced in the process.
It takes about two minutes.
And
let me go like.
Like here,
I prepared some scene
simulation results and.
Like this.
So you have your UFC files
and there is a program
which is test don't see, it doesn't
look very extraordinary.
Oh no, you can't.
OK, let me use to
test
it to reduce.
So
what I'm doing here is, if you
would usually you can
this, if of some, is actually you just
use because if you are
running it on the FPGA, then
there's a there's a problem that
when you're intruding,
then the the program doesn't fit
into the block room and
your program won't run on the
marketplace. And if you put it in the
room, which is not simulated in the
simulator, then it will not work at all.
This is really ridiculously stupid
stuff.
So I'm using here, I'm using
the the bus system, which is
the file for
which I was showing before, where you
can,
um,
where you can access the registers by
using those helper functions.
And
let me compile that.
Let me see what do we need,
Texas?
I mean, you
know, we need
to see we need to test
to see, test and.
But some let's see.
And let's
see if it works.
No. Oh, you just specify.
OK, I need to.
Just add buzz.
Let's see.
So this is now
compiled the test.
Let's see, um, that I was showing
you, this is
a test. Let's see.
And if I'm no
running it, then
you can see it's adding five
plus 10
x a and the result is 15
hexadecimal.
If I'm one to change that.
You know, I just do something like this.
Oh no, this was the wrong file.
The uh, if I want to change
it here.
Then I just frequent pilots
and running.
And you're getting the new results.
And so this was simulating the
whole picture that
we just created without having
you to simulate the whole process.
But the problem the program that we're
using can still be used on
the microplates or on the process of that
is actually running on the FPGA.
And so you're saving
really a lot of time
by by doing this
because this runs significantly faster
if you're the turnaround time.
As I said, between changing your
C code and seeing it and the
and the isam of the change would be like
two minutes and you could see it's
here. It's just a matter of seconds
so that you can do try
and error.
Um,
good.
So yeah, so this is
basically over the wanted to show it to
you?
As I said, all is
well, it didn't say that actually
appears. That shows part of my
bachelor or my pitch issues.
No, they're not so
different.
I've been working on it for for credit
for a few years,
it says Box.
I know that. So if you encounter any
of those, I would kindly ask you to
report it.
And what I really want to
bring to you as a message is that
programing FPGA is doesn't need to
be hard.
Just the tooling that sucks and the
language. And
so basically, yeah, so
but the Huntress, OK,
so I really want to
bring to you the simplicity
of being able to
to program. If PJ's and
I would really be welcome
would be really nice.
If you could take a look at Peter dot
piece HDL dot org, you know,
tested crash reported.
And if you're interested
in having a nice boat that comes along
with it, you can go to boats to
the other dog and give
me a hint on what the price for this
boat should be.
And if you're interested in
and following me, whatever I'm doing with
them, I'm on Twitter, Facebook, Google+.
I'm not actually on Google.
Plus it's just a creative contact
and and you
can read in the blog about what
I'm up to if I have time to which
I didn't have in the last few months.
Do we have any questions?
Microphone one, two.
So two questions.
Question one How do you deal with
two and more clocks in a design?
Yes. And how do you?
And this is, can I set up the
cell at my home?
Yes.
OK.
I was the first one.
A little bit more details, please.
OK.
So if you're if you're doing
something that is a little bit more
serious than blinking at this
and you have some privacy concerns.
There's a command line version of HDL
available that you can use.
There is no need to run it on server.
But the reason I'm not advertising
it so much is because I know that
most of you are lazy.
And when it comes to reporting bugs and
when it's crashing on the server, I can
actually see it and I can take care of
it.
And also,
this is it's also ensured that this is
the latest version of the compiler that
you're using.
So there's a there's a command line
version, the
that's a web biggie.
I didn't make that open-source
yet. I'm not sure if I ever will because
I want to have a single.
I want to have a single place where
everything is concentrated.
Yeah, but there's there is no restriction
there and it's open source.
So if you're if you're unhappy with what
I did was what I'm doing, just it.
Hmm.
OK. So how stable is the
language? So if I write code today,
well, it's still run in two years?
Or do you think you will still at some
synthetic changes?
I would say
I might add features
small syntactic sugar features
that increase the readability.
But as of now,
I didn't make any changes in the last
year or so.
Even more so, I think that
was what I have from a language
perspective is quite stable and
and well-suited for for its tasks.
So there was no there were no tasks that
seemed like we were thinking like, I need
to have some language, different,
different language construct for that.
Your approach is to make it easier for
poor animals to fight
FPGA stuff.
But there's a difference in thinking
if you know if you don't, right?
If you if you write code for
video, you don't write code, but
behavior.
And by a very large
looks like and
HD, it looks like I say Pascal,
you error.
It's totally different.
I'm not sure if
another language should not be like,
let's say the behave stuff
more describe what I have the
people to see that it's behavior
and with you, it looks like she could,
but it's not code.
If if it's a loop,
it's you cannot comfier
a loop from whatever plumbing
language to virtually every dog
or even yours.
And this is this makes a lot of people
they must see different and this is not
really supported.
Now you say, OK, it's
the idea is great.
It looks more complex,
less complicated.
So, yeah,
so this is true.
The language looks.
It looks cleaner, but it is not.
See, it is a Perl
language that in the end, translate
to a process oriented language like video
and very look. This implies
that you have to do
to think to rip your heart, to wrap
your head around the new product and that
it introduces.
And this is like
when you are when you are coming from a
format from C and you want
to learn functional programing, you need
to wrap your brain around that as
well. And HDL will
not solve that for you.
It doesn't do anything. Magic was to
follow.
It's yeah, it's a new purging,
but at least the language is not.
The tooling is significantly
better. I have called folding in my
editor, which is something that you
cannot say about most editors and the
exciting stuff.
And it is much,
much better tooling and hopefully
better usability overall,
which should ease the learning curve
significantly.
A question from the internet.
OK, I've got a small
question here.
Someone was asking whether there will be
PDF renderings of your slides available
because they were kind of hard to read
on the high quality screens as well.
Yeah, they will be available.
I just finished them like five minutes
before the presentation, so I
didn't have time to upload them yet, but
they will be in the next series of too
far from them, I guess.
OK, and then actual technical question,
are there any proof of concepts for
larger scale projects and what is
your adaptation for runtime, dynamic
assertions,
runtime, dynamic assertions?
I have no idea what he means by that, but
for the first question, I can tell you
that.
So I was using
one of the bigger codes that was writing
that actually a student of mine was
writing and he was doing that in the gym.
Ed was the
discrete way for transformation, which is
like two and a half
thousand lines of
code.
It doesn't sound like a huge project, but
if you would think of two and a half
thousand lines of assembler, then you
would think, OK, this is maybe a bit
harder to do.
And so the
lines of code can be seen like this,
which results in like,
what was it, seventy five thousand lines
of code?
And from a from a
mental perspective, this was very
challenging to to do
because they had to do the timing right
and stuff like this.
But I don't see that.
I don't see that Pascal would fail for
for certain types of projects because
in the end, you can always instantiate
video codes or are very
local modules.
You're just losing the ability to
simulate them as fast as you can with
with this issue.
OK, so microphone two
Oh,
I have a small clarification, a little
clarification regarding the runtime
dynamic assertion him.And checking
setup and holding Time's
Up.
No, I'm not doing timing.
Yeah. So if
your design is not meeting the timing
requirements, then this
is something that you will get told.
And in the synthesis step, this is
not something I'm looking into,
at least right now.
All right. Thank you.
What are your thoughts regarding code
reuse, such as some kind of standard
library or including existing code
snippets?
Well, you can use those
you can, as I said, you can instantiate
video modules or very large modules.
All you have to do is to do your
declaring.
Basically, you're just declaring an
interface where it says, which
is like a component declaration and video
or saying you have this, but this part,
this part, and then you can use it
and be as HDL code and say,
I
write some kind of a module to
process an image and I want to share it
with people.
Are there any mechanisms for including
that in an easy way?
Not right now. No, you would have
to put in the sources.
OK, thank you.
Hello. Since you made
such a nice person destroying
all the traditional competition,
I wonder whether you also convert to lava
or plastic so
you can destroy all the industrial
solutions?
This lava really OK?
Yeah, no, I didn't do that.
Sorry, but it would be
interesting to do
back to the questions from the internet.
Another listener at home
found it difficult and time consuming to
handle multiple hardware course and
special bootloaders for each core.
Is there a simple method implementing
something like a stage to illiterate
or boot system?
What is he talking about?
Maybe you got the window open for a
different talk.
Running in parallel.
That's what he said.
I already asked him for clarification,
but that's it.
We could switch to a different one.
How accurate this degenerated.
We HDL code, for instance, my HDL
produces sometimes false we HDL
code, which is very annoying
because it always produces a perfect
code.
Now, this what I think
when I'm also I,
I created a very log
output module and
it's on Bitbucket already.
But you know, I was I was thinking
like, OK, maybe this is a one way
project, but then we realized that
it's not.
And I wasn't happy with the quality.
So I really I really put a lot
of emphasis into being sure
that the code to generate that is
generated is behaving exactly
the same way as as the
other code that you're describing.
And I didn't have
any reports that the video code generated
was was incorrect
compared to what you're describing in
audio.
So yeah, there is no formal proof
that this is even though I'm
academic, but this is working,
but I'm rather crashing the
compilers and generating
anything that is wrong.
But to microphone to
OK.
So if you have
done a lot of stuff with very long
and have looked into video,
would you still suggest to
have a look at PS HD and
just because I'm lazy, use
Sagal? Or is there any major,
you know, improvement?
For me, it looks like
maybe I might.
Development would be quicker because
I need less code.
But like if I have done bigger
projects and very luck,
is there any drawbacks and going to this,
you
know, there are really just
more upsides, you know, can you do this
demo? Was there?
No, no.
You see? So,
yeah, so the the advantage for
the users that are already familiar with
was very, very low.
Very long is you're
getting a significant speed up in
simulation.
And this leads to a quicker turnaround
time. And also
what I what I find very, very important
and is that the simulation
the vehicle with is generated is behaving
in a simulation the same way as in the
hardware.
This is something that I've really put an
emphasis on, and this is not always,
always easy. And especially in very look,
I found it to be very difficult to
actually do that.
But maybe that's because I'm a secondary
lock.
Um yeah.
So
I think there are I think there are
advantages to using
because in a professional environment
and especially when you're, for example,
when you're running the the discrete
way for transformation embedded
into into the open JPEG core
it takes to execute
the the open JPEG with embedded
simulated wafer transformation takes six
seconds.
And if you run it in,
if you run the picture through open JPEG
was in the reference
automation and in the virtual simulation,
it not just takes two and a half gigabyte
of valuable RAM or traditionnels
gigabytes. If you're if you're
if you're coding the memory of it wrong,
it also takes if one
factor of one thousand two hundred times
longer.
So, by the way, the simulation
takes an edge.
There takes 20 megabytes
for the open JPEG.
So I think those are really significant
speed ups and also as you can embed your
own configuration languages, and it has
very many extension
points that you can hook into to
to do what is not right now.
It's supported right now.
So I think it's fair.
OK. So do you still think
it's helpful to know very local?
As mentioned before, now it looks like
a programing language, not like a
hardware description language anymore.
It definitely helps. Yes.
OK. Yeah.
I have two questions, one is
what is your timeframe for
the boards like and by what is the
governance? And the second question
part of what makes Arduino so successful
is that people don't have to know so much
about the hardware anymore.
Like, if I want to use SBI on an Arduino,
I don't know.
I don't have to know which restaurant
registers to shift which bits in.
So is there going to be something like a
standard library that that
like, can I pick for say for you word
ICRC, whatever that I can simply
add to to my HDL project?
Yeah, this is this is really where
I'm calling out to you.
I really want you to use
and create those
calls, and I want you to be.
I want to.
I want to add some collaboration
where to choose, where you can have
modules pulled into.
So this would be really the ultimate goal
of of doing that right now.
I don't have it, and I'm very sad about
it, but I really would love to have it.
And furthermore, it's fun for the
boards like the board.
OK, so the time frame is that
we have a almost working prototype here.
And really
so the idea is I want to make an
Indiegogo campaign and want to
I want to get a big, big a number
of people to produce the bottles so that
they can get the price.
That is around 30 euros, which
I think is a really neat price.
And so for that, if
you're subscribing to the board's
thing, you know, that was the link that I
was mentioning, then you
can you can.
You will be notified when the when the
campaign goes up.
And I really hope to be able to put it
up in January so that
it's running through in February, so that
in March and
April kind of thing, you will
maybe get the board.
Awesome. Thanks. Thanks for the great
work.
Back to the questions from the internet.
Another question is, was
there any specific reason
behind designing
a new language instead of going
for something like Python, like
my HDL or Python in general?
So the way the
so be, it is a very long
video and my elbows are.
Those risks are process oriented
languages, and they work by
describing something, you know,
if you want to have a register, you say
something.
This would be a register.
No, no. The other thing and it's about
you saying, like, if rising, it's there,
then do this and do that and so on.
And when I was starting my PhD thesis,
I want to have an easy way to pass
the source code and make sense out of it.
And so this was the original motivation
to create audio, to have
some, some sane way
of making sense of the input
source.
And then I realized that actually, this
language is much simpler and nicer.
And so I thought, maybe
do something for the
the better of the community
that are interested in programing
languages.
There's also another suggestion
coming in from the Nets
since you mentioned pushing down
the price point of your boards.
Someone was wondering why you were using
an X Mega, which costs around
three euros apiece, while you could also
get an arm's microcontroller for
around a third of the price.
Yeah, that's because
I know the experience and
I know that the great
thing you have to put on the
the programing logic on the
X and then it was possible to do
and that's just the way it went.
And I really liked outMost.
So I took this one.
Maybe I could save a year or two if I
if I use another one, but I wouldn't
be familiar with it. And then you have
the cost of not being familiar with it,
which you have to consider as well.
Also, I like that you have some kind
of other audio capabilities,
which takes me on.
OK, I'm going to cut the Q&A
short because we're going over time, but
a big applause for Kirsten.