Posts

Showing posts with the label linkage

My 2013 DVCon Paper and Poster

I just noticed that my 2013 DVCon paper and poster are no longer archived on the DVCon website.  So, for my records at least, here they are: The poster:  Poster: ASIC-Strength Verification in a Fast-Moving FPGA World The paper:  ASIC-Strength Verification in a Fast-Moving FPGA World Apologies for the PDF of the paper, but converting it to html requires more time than I have at the moment.

Fix for Cura's Ender 3 gcode

A child of mine finally asked for a 3d printer.  I knew that if I tried to push it, no kid would be interested, so I didn't.  But finally, one of them asked for one.  We ordered the Creality Ender 3 that night from their website and some filament from Amazon.  It all arrived a couple days later and we enjoyed the process of assembling it and then finally printing the gcode files that were on the SD card that came with the printer.  Including those was a really nice touch.  Once we got the bed close enough to the nozzle it all worked great. After the initial success we found some models on thingiverse, sliced them with Cura , and then saw the printer do something like this (not my video) over and over.  Too much filament in the wrong place, no filament in the wrong place.  It was a strange and bewildering start-up sequence to watch.  I searched the internet for advice and didn't find much.  I finally just opened up the gcode file that C...

MSD: A Red Hat-like business for Open Source EDA (Verilog, VHDL, etc.)

I have been working with commercial EDA tools (Verilog, VHDL, etc.) for years and always found them to be quite overpriced and frustrating.  Whenever I bring up the idea of using open source tools I get responses just like I got when first brining up Linux in the workplace back in 2001.  Things like, "you get what you pay for" and "it's only free if you don't value your time."  Red Hat (and SUSE/Novell) addressed those concerns for business people and made Linux mainstream (and put UNIX out of business and made a lot money for themselves in the process).  Maybe a similar business could do the same for open source EDA. To that end, I have quit my job and I've spent the past few week putting this business together.  What do you think? https://millenniumsoftwaredesign.com (AKA, https://msd.llc/ )

A Quick Look at svlib

I just took a quick look at svlib from Verilab.  Very cool.  It's a library for SystemVerilog that gives you file globbing, regular expressions, a better string class, simple ini config file parsing (with yaml support promised for the future!), and more.  It was announced back in March and it took me this long to getting around to reading about it.  Hopefully it doesn't take me that long to actually try it out :-) They welcome feedback so brace yourself, here it comes.  First of all it's open source (Apache license) which is excellent.  It's open source and it has documentation.  Amazing!  :-)  It is not currently developed openly though.  Could we get a github, bitbucket, or sourceforge project going?  Our industry (design verification) desperately needs to admit and recognize that we are software developers.  I mean no, we are verifiers!  Bug finders!  It just so happens that writing software is the primary tech...

No More Ads, Send Tips with Bitcoin

Summary: ads are gone, send me bitcoin to say thanks instead. I have always kept notes for myself to remind myself how to do various things. I have also kept a journal since a very young age where I often include opinions and thoughts on various matters. At some point, years ago, I got the idea that I should post some of the notes and thoughts in case they would help someone else. That requires a lot more work than just typing stuff quickly into a text file, though, so I needed a little more motivation. I mean, sharing and helping others is great motivation, but when I read about Adsense from Google, and how Google could show people links to products and services related to my posts, and I could make a few bucks if people thought those links were useful and clicked on them, and how it could help out the people providing those products and services as well, it felt like this great intertwined synergy of helping people out and possibly even gaining some monetary reward as well. An...

List Foreign Keys in Your Postgresql Database

I wanted to know which tables referenced a certain other table in my database, but being a very occasional user of SQL, I didn't know where to begin to find that. Fortunately, the internet had the answer , from Tom Lane himself actually. Just run this query on your Postgresql database: select confrelid::regclass, af.attname as fcol, conrelid::regclass, a.attname as col from pg_attribute af, pg_attribute a, (select conrelid,confrelid,conkey[i] as conkey, confkey[i] as confkey from (select conrelid,confrelid,conkey,confkey, generate_series(1,array_upper(conkey,1)) as i from pg_constraint where contype = 'f') ss) ss2 where af.attnum = confkey and af.attrelid = confrelid and a.attnum = conkey and a.attrelid = conrelid; That shows all foreign key relationships in your database. If you just want to see which tables reference a particular table, do this (replace my_table and my_referenced_column with the table column you want to see t...

Free Verilog Simulators

At DVCon 2013 I asked JL Gray 's panel if we would ever have Free tools, like the software world. None of panelists seemed to think so, one of the panelists, a Mentor employee, scoffed, "you get what you pay for with free tools." Never mind that their (and Cadence's and Synopsys's) products are very likely developed with tools that contain millions of lines of Free software. So, to work towards answering my own question, I spent a little time and looked for Free/Open Source verilog simulators. Here's what I found: Icarus Verilog GPL Cver PVSim Verilog Simulator VeriWell Verilog Simulator I have personally used Icarus and Cver before, but not very extensively.  They were usable and seemed pretty complete, for Verilog.  None of the above claim any support of SystemVerilog except for Icarus.  The Icarus developer at one point expressed abhorrence at SystemVerilog but it seems support for some parts of the language have been added. PVSim and Veri...

My .emacs is now in Mercurial

A while ago I decided to start maintaining my .emacs file under revision control. I picked git because it seemed like the cool thing to do. I put it on gitorious so that I could easily sync it with my home and work machines, and it was public in the off chance that it might help out some other emacs user. Today I converted it from git to mercurial, because for some reason hg incoming is more intuitive and easier for me to remember than git fetch && git log ..origin/master Maybe I'm weird that way. Anyway, the new repo is on bitbucket . That is all.

Email with Thunderbird, Compose with Emacs

My Mac let's me use emacs keyboard shortcuts everywhere. I'm really sad that I don't get that in Linux. How the universe ever got into this state is beyond my comprehension. Mail.App has gotten me hooked on emacs keybindings when typing emails especially. The solution in Linux, it turns out, is to just use emacs. I already have It's All Text for Firefox, with emacsclient as the editor. I just found External Editor for Thunderbird, with emacsclient as the editor and tbemail-mode for extra goodness. I think that'll do.

Mercurial is Teh Awesome

My team at work recently switched from Subversion to Mercurial for revision control. That’s no small feat for a hardware design team (see: Averse to Change ). It helps a little that we are mainly FPGA people (a lot “softer” than an ASIC), but there are still definitely hardware attitudes about change. Our software partners made the change a while ago, so they already had some process and infrastructure set up that made it easier for us, plus they could point out from real experience that it was an easy transition with many benefits. That helped a lot. I took the lead on making the change for our team (is it true everywhere that on a digital design team, the verification engineers are the de-facto “tool guys” as well?). I studied up on how exactly mercurial works. I mean, I had the basic idea down since I’ve been toying with the fancy new revision control tools for a while now , but I didn’t really reach enlightenment until a few months ...

Trying to like Chrome

Now that the Google Chrome browser is official for Linux and Mac , I've been trying to use it and like it. It's hard though. I keep looking for the tabs below the address bar, but Chrome decided to put them up higher. It's not a huge deal, but it's causes some friction. The other problem I noticed right away is when you get a bunch of tabs open, the tabs get really small, and the x button to close a tab is almost a full 1/4 of the entire tab. It's easy to click the x and close a tab when you don't mean to. In firefox this happens too, and the remedy is to click History->Recently Closed Tabs and get your tab back. No such option in Chrome. There is a list of recently closed pages, but if you click one of then, it doesn't open a new tab, it just switches the tab that you are on to the page in the history. Grr.

Emacs Now Has Uptime

I noticed a few places mentioning that emacs 23.2 has been released , and I went and read the changelog and noticed a few cool new things. Probably the best was down in the emacs 23.1 section. Yes, emacs now has an uptime command, M-x emacs-uptime . That is awesome. My current emacs uptime (on my work machine): 4 days, 21 hours, 52 minutes, 47 seconds. What's yours? P.S. if you aren't using emacs-server and emacs-client yet, you probably don't stand a chance in this contest. P.P.S. Hmm, did Steve Yegge have anything to do with this new feature?

Real-life Laser Defense Against Malaria

This is the coolest thing I've read in a while. If the article is too long and/or technical, at least watch the high-speed video of the mosquito getting fried. It's awesome! Backyard Star Wars (the weapon system, not the movie).

New Build Tool: fabricate.py

I stumbled onto a new build tool today: fabricate . I can't believe how cool it is, and that nobody has thought of it before (OK, actually, one person did , but still!). You give it a command, and it runs the command with strace and looks for all the files the command reads and produces and uses those as the command's dependencies and outputs, respectively. The next time you run the command with fabricate, if the outputs don't exist or the dependencies have changed it re-runs the command, otherwise, it doesn't. In other words, it does all the work that you normally would try and do with make, automatically. Another cool thing about this is that it will work with anything. You don't have to write builders for it like you would for scons (another tool I looked at for a bit). I spent some time trying to get scons to run modelsim compiles and simulations for me, and it was way too hard to make it work. I just tried fabricate with a small modelsim job and it ...

Our New Home Phone: Ooma

Since my family and I just moved to a new state for this new job, we took the opportunity to look at different options for home phone. Some friends had switched to ooma and liked it, and after a little research, we decided to go with ooma too, specifically the ooma telo . We got it at best buy on sale for about $225, and that's all you pay. Apparently we'll eventually have to start paying about $11 a year for some sort of telecom tax. Other than that, nothing. You might be able to find the telo for cheaper on ebay or something too, I didn't look into that too much. I connect my cable modem directly to the telo, and then the telo to my router, and then my computers to my router. You plug your normal land-line phone into telo too, and then it works like it always has. With everything going through the telo, it does QOS to make sure your voice traffic always has enough bandwidth, and it can do port forwarding so web and ssh requests still get to my linux machine. It...

Initial Thoughts on Google Go

I read the “tutorial”: and thought, “the syntax is Frankenstein ugly. They have Guido on staff, but this looks like they consulted Larry Wall. Why didn’t they just write an open source D compiler?” Then I read the FAQ . Some very interesting ideas, and personally, ever since using C++ for some large embedded programming projects (large? embedded? not as oxymoronic as you might think), I’ve been thinking these same things for a while now: No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends: Computers are enormously quicker but software development is not faster. Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation. There is a growing rebellion against cumbersome type systems like those of Java and...

New Job, New Focus

I have a new job! I am now a verification engineer at a relatively new hardware company in Utah. I worked on digital design and verification stuff back during internships in college and then for the first few years that I worked full-time. Then about five years ago I switched over to embedded software. It's fun to be back in the hardware design world. Better verification and system modelling was a hot topic five years ago, and it looks like a lot of progress has been made in the intervening years. It's really cool to see. Another big win with the new job is, no more windoze! ASIC designers know a good development environment runs on Linux ;-) I mostly use this blog to write down helpful reminders for myself, and as a start, here's my first verilog tip. Code browsing with ctags works for verilog too! I used find to get a list of all our verilog files and put that in a file called, file-list.txt. Then I generated tags like so: ctags -e --verbose --language-for...

Extreme

Pretty soon, all programming will be web programming. And I thought I was making extreme statements to make a point in my last two blog entries! I wonder if Mr. Atwood understands how much programming goes into all the hardware devices that surround him? That code isn’t written in Ruby or Javascript. As for my extreme statements about how readily software is changed, I leaned pretty heavily towards one idea. I’m not usually one to have an strong opinion out to an extreme. Engineering is all about trade-offs and holding to extreme ideals doesn’t seem to fit with good engineering. I discussed the Averse To Change essay with some friends and read the comments from all of my readers (thanks you two!). One thing that came up was the idea of using the right tool for the right problem as a bigger reason to use software, not just because it’s easy to change. But what is it that makes software the right tool? I’d say it’s the right tool for ...

If You Have To Run Windows

If you have been spoiled by the developer heaven that is a well running Linux machine and you have to run windoze, this is what I’ve found that begins to almost make it bearable. You must first open file explorer (windows-e) and do Tools->Folder Options->View and then check, “Display the contents of system folders,” and uncheck, “Hide extensions for known file types.” Also, View->Details is recommended. Right-click on the question mark down near the bottom-right of your screen, left of the clock and all the icons (in the Taskbar), and chose “Hide the language bar” (or whatever the annoying thing is). Right-click on the Taskbar itself and check “Show Quick Launch” and uncheck “Hide inactive icons” On any command windows (cmd.exe, cygwin, etc.), fix the font. Click on the icon in the upper-left corner of the window and choose “Properties.” Click on the “Font” tab, and choose ...

Emacs next-line Changed Behavior?

I just made a macro to do some quick-n-dirty editing and noticed that c-n, or next-line, acts funny. If the line is long and wraps, it goes to the next visual line, not the actual next line of text (as delimited with a newline). Inconsistently, c-e, or move-end-of-line, still goes to the end of the actual line, not to just before it wraps (moves to the newline). This is with emacs 23.0.60.1, which isn't an official release, so maybe that's just what I get for being bleeding edge. Anyway, it was kind of weird and I wanted to document it. I like the old behavior of c-n better, but the c-e thing allowed my macro to still be possible. Some good that came of this was that markhepburn noticed this too , and google picked it up, and now I can see all the other cool emacs discoveries he has posted in his twitter feed.