From https://en.wikipedia.org/wiki/Scheme_(programming_language):
"Scheme has a diverse user base due to its compactness and elegance, but its minimalist philosophy has also caused wide divergence between practical implementations, so much that the Scheme Steering Committee calls it "the world's most unportable programming language" and "a family of dialects" rather than a single language."
Any programming language is only as compact and elegant as its installation procedure on different computers and operating systems.
Don't Panic :-)
On 11/10/19 2:49 PM, Christoph Maier wrote:
From https://en.wikipedia.org/wiki/Scheme_(programming_language):
"Scheme has a diverse user base due to its compactness and elegance, but its minimalist philosophy has also caused wide divergence between practical implementations, so much that the Scheme Steering Committee calls it "the world's most unportable programming language" and "a family of dialects" rather than a single language."
Any programming language is only as compact and elegant as its installation procedure on different computers and operating systems.
I am understand your concern as we talked about that today in the Mumble session.
Well, I am not a programmer or software engineer.
Regarding the huge amount of effort which has to be done for the cell library and my tiny steps of progress as I started in Spring 2018 - I faced non-scaling productivity.
So I thought about a languages I could take for the Standard Cell Generator (Popcorn) - and started with Tcl. Month before the last congress in 2018 I also recognized the not sufficient code quality in Tcl for the Popcorn.
I went to a Rust course also, and start rewriting the Cell Generator in a language I already learned at University in the nineties. Beside Pascal, Prolog and a little bit of C this was Scheme. I did not wanted to waste time by learning another language which could attract more people. IMHO a LISPish language isn't the biggest problem we are facing.
So, as Tcl, Scheme is also used in the EDA field, the SKILL language you are using to glue functionality together under the big Cadence tool suite is Scheme. Magic has beside Tcl a Scheme command line interface also. gEDA/gaf for schematic entry uses heavily Scheme for exporting the netlist and for configuration. Anybody in the ASIC business area got - beside Tcl - his first contact with Scheme; and unfortunately with Perl.
Over the years, scheme got a couple of revisions. R5RS was a big step ahead to unify the implementations for teaching on the market around the Millenium. With the overloaded, full blown R6RS later a contrary effect occur, less implementation did the step to R6RS. So in R7RS the scheme language get IMHO the best solution for being easy enough for teaching functional programming and being sufficient enough for productive pieces of software. I decide to use R7RS, which is already 6 years old - or had to stuck on old R5RS implementations. R6RS isn't an option while nowhere fully implemented.
There are a couple of R7RS runtimes/environments on the market, even the not compatible Racket has the biggest current hype. But I decide to use the GNU scheme shell "gosh" which is GPLed and supports R7RS with version 0.9.6 onwards. BTW, this versions are shipped with Debian unstable und Ubuntu 19.04 onwards. Hence I expect R7RS scheme support in the next 20.04 LTS version of Ubuntu also.
Back to your topic in the Mumble session today..
Once, the Standard Cells are generated you can use all cells without becoming a hard-core Scheme programmer or updating your secured Ubuntu LTS box.
Being earnest, we are still using the languages, which fits our purpose and we are kind of familiar with. Andreas uses Haskel, David eg. Python.
Nevertheless, I hope you'll find your way into LibreSilicon's heavy development. :-)
Best Regards, Hagen.
How to install the latest Gauche Scheme on an old Ubuntu:
bash$ git clone https://github.com/shirok/get-gauche.git
bash$ shasum -a 256 get-gauche/get-gauche.sh 20d0c995de9e299c1f80acf19b607fc371624240b9d53fe0b0e282a29a705b66 get-gauche/get-gauche.sh
bash$ get-gauche/get-gauche.sh --system Gauche is not found on the system. Install Gauche 0.9.8 under /usr? [y/N]: y Start installing Gauche 0.9.8... ⋮ build took about five minutes on MacOSX 10.11 Intel 2.2 GHz Core i7 VirtualBox Ubuntu 16.04.6 LTS ⋮
bash$ hash -r
bash$ gosh gosh> (+ 3 4) 7
Peace —Devon
P.S. I like how it generates standard gates…
bash$ cd StdCellLib/Catalog
bash$ make catalog _ __ ___ _ __ ___ ___ _ __ _ __ | '_ \ / _ | '_ \ / __/ _ | '__| '_ \ | |_) | (_) | |_) | (_| (_) | | | | | | | .__/ ___/| .__/ ______/|_| |_| |_| |_| run: |_| Sat, 16 Nov 2019 07:56:46 +0000 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-input Not-OR (or NOR) gate" -m nor -c NOR2 INV > NOR2 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-1-input AND-OR-Invert gate" -m aoi -c AOI21 NOR2 > AOI21 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-2-input AND-AND-OR-Invert gate" -m nand -c AAOI22 AOI21 > AAOI22 ../Tools/popcorn/popcorn -l 4 -b 4 -D "2-input Not-AND (or NAND) gate" -m nand -c NAND2 INV > NAND2 ⋮
So that show stopper is no more ... nice! tatzelbrumm
~/EDA/LibreSilicon/StdCellLib/Catalog$ make catalog _ __ ___ _ __ ___ ___ _ __ _ __ | '_ \ / _ | '_ \ / __/ _ | '__| '_ \ | |_) | (_) | |_) | (_| (_) | | | | | | | .__/ ___/| .__/ ______/|_| |_| |_| |_| run: |_| Sun, 17 Nov 2019 13:46:14 +0000 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-input Not-OR (or NOR) gate" -m nor -c NOR2 INV > NOR2 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-1-input AND-OR-Invert gate" -m aoi -c AOI21 NOR2 > AOI21 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-2-input AND-AND-OR-Invert gate" -m nand -c AAOI22 AOI21 > AAOI22 ../Tools/popcorn/popcorn -l 4 -b 4 -D "2-input Not-AND (or NAND) gate" -m nand -c NAND2 INV > NAND2 ../Tools/popcorn/popcorn -l 4 -b 4 -D "2-1-input OR-AND-Invert gate" -m oai -c OAI21 NAND2 > OAI21 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-2-input OR-OR-AND-Invert gate" -m nor -c OOAI22 OAI21 > OOAI22 make: *** No rule to make target 'AAOI321', needed by 'AAOI331'. Stop.
On Sat, Nov 16, 2019 at 2:34 PM Devon Sean McCullough LibreSilicon@jovi.net wrote:
How to install the latest Gauche Scheme on an old Ubuntu:
bash$ git clone https://github.com/shirok/get-gauche.git
bash$ shasum -a 256 get-gauche/get-gauche.sh 20d0c995de9e299c1f80acf19b607fc371624240b9d53fe0b0e282a29a705b66 get-gauche/get-gauche.sh
bash$ get-gauche/get-gauche.sh --system Gauche is not found on the system. Install Gauche 0.9.8 under /usr? [y/N]: y Start installing Gauche 0.9.8... ⋮ build took about five minutes on MacOSX 10.11 Intel 2.2 GHz Core i7 VirtualBox Ubuntu 16.04.6 LTS ⋮
bash$ hash -r
bash$ gosh gosh> (+ 3 4) 7
Peace —Devon
P.S. I like how it generates standard gates…
bash$ cd StdCellLib/Catalog
bash$ make catalog _ __ ___ _ __ ___ ___ _ __ _ __ | '_ \ / _ | '_ \ / __/ _ | '__| '_ \ | |_) | (_) | |_) | (_| (_) | | | | | | | .__/ ___/| .__/ ______/|_| |_| |_| |_| run: |_| Sat, 16 Nov 2019 07:56:46 +0000 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-input Not-OR (or NOR) gate" -m nor -c NOR2 INV > NOR2 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-1-input AND-OR-Invert gate" -m aoi -c AOI21 NOR2 > AOI21 ../Tools/popcorn/popcorn -l 2 -b 4 -D "2-2-input AND-AND-OR-Invert gate" -m nand -c AAOI22 AOI21 > AAOI22 ../Tools/popcorn/popcorn -l 4 -b 4 -D "2-input Not-AND (or NAND) gate" -m nand -c NAND2 INV > NAND2 ⋮
libresilicon-developers@list.libresilicon.com