Messages - wnitzan [ switch to compact view ]

Pages: prev1 [2] 3 4 5 6 7next
6
DC Member Programs and Projects / SOC hardware modeling with SystemC
« on: February 23, 2020, 05:45 PM »
I designed a template for System-on-a-Chip (SOC) hardware modeling, using the SystemC library.
I also wrote a utility library, that provides extra functionality for such simulations.

diagram.png

This is an example of an untimed simulation of 3 modules: Master, Producer and Consumer.
The Master programs the Producer to send a given number of packets to the Consumer, and the Consumer to expect that many packets from the Producer. Once the Consumer received the said packets, it sends a Done signal to the Master, which then either repeats the cycle or ends the simulation.

Small as it is, this example demonstrates:
1. The use of blocking events and blocking interfaces to control "hardware" modules.
2. The definition of memory addressable registers with the use of generic base classes for Register and Field, and
3. The control of debugging print-out messages via command line options and/or a simple text file.

I built this on Linux, using non-recursive Makefiles, but any other building method and OS should work too.
I posted a description of this work, and a downloadable ZIP file with all the code on:
https://socmodeling.weebly.com

I hope you find this useful!

7
Embarking on this journey, I had several objectives in mind:
1. I wanted to develop C++ programs on Linux.
2. I wanted a systematic method for building those programs using Makefiles.
3. The method should work for non-trivially sized programs, i.e. programs whose code spans multiple directories and files.
4. I intended those programs to make use of libraries, that I will write myself and also obtain from other sources.
5. I wished for a simple modular approach:
 - Adding another component to a library or a program will follow a well defined procedure, with short and simple Makefiles.
 - Likewise when one component wishes to include (make use of) another component.
6. I wished that header file dependencies are automatically discovered, instead of manually entered.
7. I wished that the method supported multiple independent build types for a given program, specifically, building both debug and release versions.
8. I wanted to call make from the source directory, and have the build performed in the appropriate directory, based on the build type.

Fortunately for me, others before me had one or more of these objectives in mind, too.
Thus, I combined ideas and code from multiple sources, and produced an example code to satisfy the above objectives.
I published the method and code on make-all.weebly.com .

In the downloadable example, I demonstrate the building of a library (tinylib), and a project (tinyproj) that uses it.
The "heavy lifting" code, that builds these items, is encapsulated in a set of common helper Makefiles, thus leaving the top-level Makefiles small and simple to understand and edit.

I hope you find it useful!

8
Version 2.5 is here, just in time for Waveme's 3rd anniversary.

New features:
- Analog waveform drawing:
Signal row now supports 3 new analog segment types: Sine, Linear and Ramp/RC time constant.
A mix of both digital (L, H, Z, X, D) and analog segment types can be drawn in the same row.
- Quickly change Signal and Bus segment width without opening a dialog box, by mouse dragging, keyboard shortcuts, toolbar buttons or menu commands.
- Project and image file dialogs now show an initial suggestion based on the diagram's name, and remember last directory location for each type.
- Default font is now OS and local system dependent.

Bug fix:
- Gaps: Handled occasional incorrect drawing of an edge's middle pixel.

9
Version 2.4 is a bug fix.

Across arrow: vertical shape had incorrect to/from unit selections.

10
Version 2.3 is now available.

New features:

- Export (save) diagram to SVG image file format.
- Directly export (save) color diagram into a black-and-white image file or PDF document.
No longer needs to first save as a black-and-white diagram, reload that diagram, and only then export.
- Open a diagram file with drag-n-drop onto Waveme's window.
- Value-lines: A new row element.
Horizontally drawn lines across a waveform, with tick marks and labels to the left of the waveform.
Most commonly used with analog signals to denote vertical values.
- Labels can be rotated, instead of only be horizontal. Applies to labels, arrows and value-lines.
Rotation is only supported when using True Type fonts.
- Signals can now start with a D value. If first segment is also a D, the left-end will be shown opened.
- Bus and Auto-bus waveforms can have open ends when using D and X segments, instead of only closed ends.

Pages: prev1 [2] 3 4 5 6 7next
Go to full version