Reply by Rick C. Hodgin●December 30, 20162016-12-30
On Friday, December 30, 2016 at 10:06:45 AM UTC-5, Rick C. Hodgin wrote:
> On Thursday, December 29, 2016 at 5:26:11 PM UTC-5, Theo Markettos wrote:
> > Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> > > I've been working on designing my L1 cache:
> > >
> > > https://github.com/RickCHodgin/libsf/tree/master/arxoda/core/cache_l1
> > > https://github.com/RickCHodgin/libsf/blob/master/arxoda/core/cache_l1/cache1__4read_4write.png
> > >
> > > And I'm about ready to program in a single 128-byte cache row and see
> > > if I can get it working. I'm going to write it externally and produce
> > > Verilog code using gates and nets.
> > >
> > > If I get it to a point where I think it's all there, but it's still
> > > not working, would you be willing to help me debug it?
> >
> > I can't help you debug, since it's your design that only you know on
> > hardware only you have access to. Debugging is a very personal penance.
> >
> > However I suggest you have a look at ModelSim for simulation of your design
> > - Altera have a free version with some limitations. For running on hardware
> > SignalTap gives you visibility of what's going on inside - with the
> > limitation that the number of signals and time are limited and it typically
> > involves frequent resynthesis cycles. Hardware debugging can be slow and it
> > helps to think carefully about what you want to view before each synthesis
> > run - simulation has much better visibility shorter round-trip times, so it's
> > worth starting there unless you really need hardware.
>
> I appreciate your input, Theo. Thank you for your help.
>
> I would prefer to do it in simulation. I have plans to create a tool
> to do exactly that. In fact, I've been building that cache design in
> both my mind and GIMP (graphics software). With my simulation tool,
> called Logician, I would be able to create that basic image in a
> similar designer which is not just creating the image, but is connecting
> the wires together, having gate blocks which appear graphical as in my
> image, but contain underlying real logic.
>
> I may go ahead and get that tool done so I can work on those things in
> simulation. If I had that tool completed, I would actually like to
> complete my entire CPU and run it in simulation.
I want my Logician tool to function more or less like this logic sim
tool:
https://www.kolls.net/gatesim/
Screenshot: https://www.kolls.net/gatesim/gatesim_ss.png
It has input, output, and an aggregation ability to create fundamental
circuits which can then be manipulated as larger constructs, as in the
image with the "half adder."
I want to provide noodle connections (as in that image), as well as
square/diagonal-routed lines. I want to provide a "tactical" view
which shows things in block diagram concept, as well as a "details"
view which shows circuits, and to be able to enable those settings
on individual components within. I want to be able to drill down
into an aggregation to see the fundamental circuits, and to be able
to leave those settings enabled in future views.
I also want to do it all in OpenGL because I eventually want to
create a process generation feature, which will physically generate
the circuits (in 3D) used for creating transistors on a substrate,
along with all wiring, placement, and routing. I want it to give
users the ability to take concepts from idea, to design, to testing
and debugging, to physical layout and placement on a semiconductor
substrate.
My goals ultimately are to create a primitive fabrication facility
called Sand Castle Fabs, which uses antiquated process technologies
that are well mature and inexpensive to allow the creation of custom
ICs without the huge cost of modern fabs. That's a goal I have for
the latter half of the 2020s. :-)
Best regards,
Rick C. Hodgin
Reply by Rick C. Hodgin●December 30, 20162016-12-30
On Thursday, December 29, 2016 at 5:26:11 PM UTC-5, Theo Markettos wrote:
> Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> > I've been working on designing my L1 cache:
> >
> > https://github.com/RickCHodgin/libsf/tree/master/arxoda/core/cache_l1
> > https://github.com/RickCHodgin/libsf/blob/master/arxoda/core/cache_l1/cache1__4read_4write.png
> >
> > And I'm about ready to program in a single 128-byte cache row and see
> > if I can get it working. I'm going to write it externally and produce
> > Verilog code using gates and nets.
> >
> > If I get it to a point where I think it's all there, but it's still
> > not working, would you be willing to help me debug it?
>
> I can't help you debug, since it's your design that only you know on
> hardware only you have access to. Debugging is a very personal penance.
>
> However I suggest you have a look at ModelSim for simulation of your design
> - Altera have a free version with some limitations. For running on hardware
> SignalTap gives you visibility of what's going on inside - with the
> limitation that the number of signals and time are limited and it typically
> involves frequent resynthesis cycles. Hardware debugging can be slow and it
> helps to think carefully about what you want to view before each synthesis
> run - simulation has much better visibility shorter round-trip times, so it's
> worth starting there unless you really need hardware.
I appreciate your input, Theo. Thank you for your help.
I would prefer to do it in simulation. I have plans to create a tool
to do exactly that. In fact, I've been building that cache design in
both my mind and GIMP (graphics software). With my simulation tool,
called Logician, I would be able to create that basic image in a
similar designer which is not just creating the image, but is connecting
the wires together, having gate blocks which appear graphical as in my
image, but contain underlying real logic.
I may go ahead and get that tool done so I can work on those things in
simulation. If I had that tool completed, I would actually like to
complete my entire CPU and run it in simulation.
Best regards
Rick C. Hodgin
Reply by Theo Markettos●December 29, 20162016-12-29
I can't help you debug, since it's your design that only you know on
hardware only you have access to. Debugging is a very personal penance.
However I suggest you have a look at ModelSim for simulation of your design
- Altera have a free version with some limitations. For running on hardware
SignalTap gives you visibility of what's going on inside - with the
limitation that the number of signals and time are limited and it typically
involves frequent resynthesis cycles. Hardware debugging can be slow and it
helps to think carefully about what you want to view before each synthesis
run - simulation has much better visibility shorter round-trip times, so it's
worth starting there unless you really need hardware.
Theo
Reply by Rick C. Hodgin●December 29, 20162016-12-29
On Wednesday, December 7, 2016 at 3:07:21 PM UTC-5, Theo Markettos wrote:
> Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> > Will I be able to create a 158 MHz clock on this device? Or is that
> > beyond its abilities? Also, I have add and compare circuits that need
> > to run at about 79 MHz. Will those work properly?
>
> The /device/ should be capable of up to 300-400MHz - at least that's what
> I've seem in general use. However it's your problem to make a design that
> will run at the speed you use to run it at. I wouldn't have thought you
> would have big problems at 79MHz, and might be OK at 158MHz - it really
> depends.
>
> TimeQuest timing analyser will tell you, among other things, the maximum
> clock speed that each clock domain will run at. Assuming you have
> constrained your input clocks appropriately (ie have an SDC file that
> indicates their speeds, and any relations between them) then Timequest will
> warn if your design fails to meet your timing constraints. If you have a
> PLL, it knows the input clock and will calculate the speeds of the generated
> clocks, so in general you just need to tell it the input speeds and it'll
> figure out the rest.
>
> > I'm moving from the area of digital theory design to FPGA programming
> > reality. I'm not sure what to expect.
>
> You might find it useful to have a read through an intro to the tools - for
> instance this my brief rundown aimed at second year university students (in
> the middle of a course doing other things including verilog and
> bare-metal software development):
>
> http://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/fpga-intro.html
Reply by Rick C. Hodgin●December 10, 20162016-12-10
On Thursday, December 8, 2016 at 3:12:44 PM UTC-5, Rick C. Hodgin wrote:
> On Wednesday, December 7, 2016 at 3:45:10 PM UTC-5, Rick C. Hodgin wrote:
> > On Wednesday, December 7, 2016 at 3:07:21 PM UTC-5, Theo Markettos wrote:
> > > Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> > > > Will I be able to create a 158 MHz clock on this device? Or is that
> > > > beyond its abilities? Also, I have add and compare circuits that need
> > > > to run at about 79 MHz. Will those work properly?
> > >
> > > The /device/ should be capable of up to 300-400MHz - at least that's what
> > > I've seem in general use. However it's your problem to make a design that
> > > will run at the speed you use to run it at. I wouldn't have thought you
> > > would have big problems at 79MHz, and might be OK at 158MHz - it really
> > > depends.
> > >
> > > TimeQuest timing analyser will tell you, among other things, the maximum
> > > clock speed that each clock domain will run at. Assuming you have
> > > constrained your input clocks appropriately (ie have an SDC file that
> > > indicates their speeds, and any relations between them) then Timequest will
> > > warn if your design fails to meet your timing constraints. If you have a
> > > PLL, it knows the input clock and will calculate the speeds of the generated
> > > clocks, so in general you just need to tell it the input speeds and it'll
> > > figure out the rest.
> > >
> > > > I'm moving from the area of digital theory design to FPGA programming
> > > > reality. I'm not sure what to expect.
> > >
> > > You might find it useful to have a read through an intro to the tools - for
> > > instance this my brief rundown aimed at second year university students (in
> > > the middle of a course doing other things including verilog and
> > > bare-metal software development):
> > >
> > > http://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/fpga-intro.html
> > >
> > > Theo
> >
> > Excellent info. Thank you, Theo.
> >
> > I'm meeting with a local hardware project Meetup group this weekend,
> > so hopefully I'll pick up a few pointers. They typically go over a
> > design and build from beginning to end that one of the members from
> > the group has already had success in getting it to work.
>
> I'm going to start by trying to get the address generation circuit and
> read memory working. I have designed a staging register, and a use
> register, so the next 8-byte read can come in the background while the
> pixel clock is shifting between 8-bit blocks in the use register.
>
> I think this will provide adequate timing for video modes even well
> beyond 1024 x 768 x 75 Hz.
I began working with Altera's Quartus II software last night and had
difficulty in understanding how it works. In addition, as I began to
write verilog code to reproduce my design, it loses so much in the
translation into text.
I've decided to complete my Logician tool so I can do a graphical
design and then have it generate gate, wire, and net verilog source
code for compilation in the tool.
I'm an image/design-thinker ... not a convert-to-text-thinker. :-)
Best regards,
Rick C. Hodgin
Reply by Rick C. Hodgin●December 8, 20162016-12-08
On Wednesday, December 7, 2016 at 3:45:10 PM UTC-5, Rick C. Hodgin wrote:
> On Wednesday, December 7, 2016 at 3:07:21 PM UTC-5, Theo Markettos wrote:
> > Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> > > Will I be able to create a 158 MHz clock on this device? Or is that
> > > beyond its abilities? Also, I have add and compare circuits that need
> > > to run at about 79 MHz. Will those work properly?
> >
> > The /device/ should be capable of up to 300-400MHz - at least that's what
> > I've seem in general use. However it's your problem to make a design that
> > will run at the speed you use to run it at. I wouldn't have thought you
> > would have big problems at 79MHz, and might be OK at 158MHz - it really
> > depends.
> >
> > TimeQuest timing analyser will tell you, among other things, the maximum
> > clock speed that each clock domain will run at. Assuming you have
> > constrained your input clocks appropriately (ie have an SDC file that
> > indicates their speeds, and any relations between them) then Timequest will
> > warn if your design fails to meet your timing constraints. If you have a
> > PLL, it knows the input clock and will calculate the speeds of the generated
> > clocks, so in general you just need to tell it the input speeds and it'll
> > figure out the rest.
> >
> > > I'm moving from the area of digital theory design to FPGA programming
> > > reality. I'm not sure what to expect.
> >
> > You might find it useful to have a read through an intro to the tools - for
> > instance this my brief rundown aimed at second year university students (in
> > the middle of a course doing other things including verilog and
> > bare-metal software development):
> >
> > http://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/fpga-intro.html
> >
> > Theo
>
> Excellent info. Thank you, Theo.
>
> I'm meeting with a local hardware project Meetup group this weekend,
> so hopefully I'll pick up a few pointers. They typically go over a
> design and build from beginning to end that one of the members from
> the group has already had success in getting it to work.
I'm going to start by trying to get the address generation circuit and
read memory working. I have designed a staging register, and a use
register, so the next 8-byte read can come in the background while the
pixel clock is shifting between 8-bit blocks in the use register.
I think this will provide adequate timing for video modes even well
beyond 1024 x 768 x 75 Hz.
Best regards,
Rick C. Hodgin
Reply by Rick C. Hodgin●December 7, 20162016-12-07
On Wednesday, December 7, 2016 at 3:07:21 PM UTC-5, Theo Markettos wrote:
> Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> > Will I be able to create a 158 MHz clock on this device? Or is that
> > beyond its abilities? Also, I have add and compare circuits that need
> > to run at about 79 MHz. Will those work properly?
>
> The /device/ should be capable of up to 300-400MHz - at least that's what
> I've seem in general use. However it's your problem to make a design that
> will run at the speed you use to run it at. I wouldn't have thought you
> would have big problems at 79MHz, and might be OK at 158MHz - it really
> depends.
>
> TimeQuest timing analyser will tell you, among other things, the maximum
> clock speed that each clock domain will run at. Assuming you have
> constrained your input clocks appropriately (ie have an SDC file that
> indicates their speeds, and any relations between them) then Timequest will
> warn if your design fails to meet your timing constraints. If you have a
> PLL, it knows the input clock and will calculate the speeds of the generated
> clocks, so in general you just need to tell it the input speeds and it'll
> figure out the rest.
>
> > I'm moving from the area of digital theory design to FPGA programming
> > reality. I'm not sure what to expect.
>
> You might find it useful to have a read through an intro to the tools - for
> instance this my brief rundown aimed at second year university students (in
> the middle of a course doing other things including verilog and
> bare-metal software development):
>
> http://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/fpga-intro.html
>
> Theo
Excellent info. Thank you, Theo.
I'm meeting with a local hardware project Meetup group this weekend,
so hopefully I'll pick up a few pointers. They typically go over a
design and build from beginning to end that one of the members from
the group has already had success in getting it to work.
Best regards,
Rick C. Hodgin
Reply by Theo Markettos●December 7, 20162016-12-07
Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> Will I be able to create a 158 MHz clock on this device? Or is that
> beyond its abilities? Also, I have add and compare circuits that need
> to run at about 79 MHz. Will those work properly?
The /device/ should be capable of up to 300-400MHz - at least that's what
I've seem in general use. However it's your problem to make a design that
will run at the speed you use to run it at. I wouldn't have thought you
would have big problems at 79MHz, and might be OK at 158MHz - it really
depends.
TimeQuest timing analyser will tell you, among other things, the maximum
clock speed that each clock domain will run at. Assuming you have
constrained your input clocks appropriately (ie have an SDC file that
indicates their speeds, and any relations between them) then Timequest will
warn if your design fails to meet your timing constraints. If you have a
PLL, it knows the input clock and will calculate the speeds of the generated
clocks, so in general you just need to tell it the input speeds and it'll
figure out the rest.
> I'm moving from the area of digital theory design to FPGA programming
> reality. I'm not sure what to expect.
You might find it useful to have a read through an intro to the tools - for
instance this my brief rundown aimed at second year university students (in
the middle of a course doing other things including verilog and
bare-metal software development):
http://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/fpga-intro.html
Theo
Reply by Rick C. Hodgin●December 7, 20162016-12-07
On Wednesday, December 7, 2016 at 2:09:37 PM UTC-5, Theo Markettos wrote:
> Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> > I've gotten everything designed and I'd like to put it to hardware
> > now. I honestly don't know where to begin on this Altera.
> >
> > I'd like to double-clock the pixel clock so I can conduct operations
> > in-between use. It requires about a 79 MHz clock at 1024x768x75,
> > so I'd need about a 168 MHz clock.
> >
> > Can somebody point me in the right direction, please?
>
> You need a PLL. You can either:
>
> Go to IP Catalog in Quartus and instantiate one. This has a wizard that
> asks you all the questions and generates some Verilog that does it. It's
> then up to you to wire it up.
>
> or
>
> If you use Qsys (a good idea) you can just drop in a PLL component and fill
> in the answers to the questions. You can then connect up the ports with the
> clicky interface - which will also keep track of your clock domains and
> insert clock crossing buffers where needed.
>
> Theo
Will I be able to create a 158 MHz clock on this device? Or is that
beyond its abilities? Also, I have add and compare circuits that need
to run at about 79 MHz. Will those work properly?
I'm moving from the area of digital theory design to FPGA programming
reality. I'm not sure what to expect.
Best regards,
Rick C. Hodgin
Reply by Theo Markettos●December 7, 20162016-12-07
Rick C. Hodgin <rick.c.hodgin@gmail.com> wrote:
> I've gotten everything designed and I'd like to put it to hardware
> now. I honestly don't know where to begin on this Altera.
>
> I'd like to double-clock the pixel clock so I can conduct operations
> in-between use. It requires about a 79 MHz clock at 1024x768x75,
> so I'd need about a 168 MHz clock.
>
> Can somebody point me in the right direction, please?
You need a PLL. You can either:
Go to IP Catalog in Quartus and instantiate one. This has a wizard that
asks you all the questions and generates some Verilog that does it. It's
then up to you to wire it up.
or
If you use Qsys (a good idea) you can just drop in a PLL component and fill
in the answers to the questions. You can then connect up the ports with the
clicky interface - which will also keep track of your clock domains and
insert clock crossing buffers where needed.
Theo