Cover photo
Brian Swetland
Works at Google, Inc.
1,694 followers|411,185 views


#fpga #xilinx #vivado

Anybody know much about driving Xilinx's Vivado design tools?

In particular, I'm trying to find out if there's a reasonable workflow for using their "IP" stuff that doesn't require a ton of pointing and clicking and version number editing on both the IP project side and containing project side every time I muck with the implementation.

I'd like to be able to design an IP block that's an AXI master and/or slave, drop it into my top-level design for simulation and testing and ideally be able to "recompile" everything all in one go.
Add a comment...

Brian Swetland

Shared publicly  - 
Neat bit of history.
15 years ago (on Feb 1st, 1999) I first set foot in a Google datacenter. Well, not really -- in the Google cage in the Exodus datacenter in Santa Clara.  Larry had led me there for a tour (I wasn't an employee yet) and it was my first time in any datacenter.  And you couldn't really "set foot" in the first Google cage because it was tiny (7'x4', 2.5 sqm) and filled with about 30 PCs on shelves.  a1 through a24 were the main servers to build and serve the index and c1 through c4 were the crawl machines.

By that time we already had a second cage, immediately adjacent, that was about 3x larger and contained our first four racks, each containing 21 machines named d1-42 and f1-42 (don't ask me what happened to the b and e racks, I don't know).  I don't recall who manufactured d and f but they were trays with a single large motherboard and a Pentium II CPU.  (Later, the g rack would be the first corkboard rack.)

Some interesting details from the order:

- Yep, a megabit cost $1200/month and we had to buy two, an amount we didn't actually reach until the summer of 1999.  (At the time, 1 Mbps was roughly equivalent to a million queries per day.)

- You'll see a second line for bandwidth, that was a special deal for crawl bandwidth.  Larry had convinced the sales person that they should give it to us for "cheap" because it's all incoming traffic, which didn't require any extra bandwidth for them because Exodus traffic was primarily outbound.

- Note the handwritten "3 20 Amps in DC" change to the standard order form.  At the time, DC space was sold per square foot, and we always tried to get as much power with it as possible because that's what actually mattered.

- This particular building was one of the first colocation facilities in Silicon Valley.  Our direct neighbor was eBay, a bit further away was a giant cage housing DEC / Altavista, and our next expansion cage was directly adjacent to Inktomi.  The building has long since been shut down. 
Patrick Weston's profile photoSteve Garf's profile photoJames Sullins's profile photoValter Conceição's profile photo
Bonus comments from +Sergey Brin on the original post.
Add a comment...

Brian Swetland

Shared publicly  - 
Dear LazyPlus,

How do I get Linux to disable motion events from a trackpad but not button presses?  Thinkpad Carbon X1 2014 no longer has hard mouse buttons, so disabling the trackpad entirely means I have no buttons for the trackpoint.  Sadness!

I've been poking at synclient but haven't found the right knob to turn yet.
Brian Swetland's profile photoSimon Wilson's profile photo
Here we go:

# DEL -> Backspace
xmodmap -e "keycode 119 = BackSpace"

# HOME/END -> Nothing
xmodmap -e "keycode 110 = NoSymbol"
xmodmap -e "keycode 115 = NoSymbol"

# don't pay attention to tap events
synclient ClickPad=1

# disable motion events
synclient AreaBottomEdge=10000
synclient AreaTopEdge=10000

# top right edge -> right button
synclient RightButtonAreaRight=4858
synclient RightButtonAreaLeft=4000
synclient RightButtonAreaBottom=2500
synclient RightButtonAreaTop=0

# top center edge -> middle button
synclient MiddleButtonAreaRight=3813
synclient MiddleButtonAreaLeft=2770
synclient MiddleButtonAreaBottom=2500
synclient MiddleButtonAreaTop=0
Add a comment...

Brian Swetland

Shared publicly  - 
So, Intel publishes a TON of datasheets, docs, etc on stuff, which is great, but figuring out exactly which ones cover which hardware is pretty perplexing.

I have this Intel NUC D34010WYK machine (  It has Intel Gigabit Ethernet (PCI ID 8086:1559).  As far as I can follow that's actually integrated in the PCH (Platform Controller Hub), along with a bunch of other peripherals (AHCI SATA controller, XHCI USB3 controller, etc, etc).  The chipset for this is "Lynx Point".

But which one?

Two of those link to this 992 page "Intel 8 Series / C220 Series Chipset Family Platform Controller Hub" datasheet:

The PCI topology described in this datasheet seems to match the topology I can observe on the machine, but the datasheet's Device and Revision ID table does not seem to match the PCI Device IDs on the machine.  The 7-series PCH document does not even include such a table.

I guess what I'm wondering is if there's some sane way to figure out exactly what chipset and/or PCH is used in this critter, and if so, how to work backwards from that to which Gigabit Ethernet chipset docs apply to it.

Anybody out there wise in the ways of navigating this madness?
Brian Swetland's profile photo
The Intel FreeBSD E1000 driver seems to imply that the closest MAC for these PCI IDs is the ICH8 family, which looks to be this databook:
Add a comment...

Brian Swetland

Shared publicly  - 
xv6-64 booted from USB via syslinux+mboot.c32 on an Intel i3-4010u NUC. shell works. usertests pass. last todo: SMP
Brian Swetland's profile photoJames Sullins's profile photoDavid Given's profile photogeorge oloo's profile photo
Solved half my SMP issue on i3-4010u -- xv6 didn't like cpu# != apicid.  That was easy enough to fix.  Now I have two CPUs!  Next: where are the HT cores?
Add a comment...
Have them in circles
1,694 people

Brian Swetland

Shared publicly  - 
Dear LazyPlus,

While doing some embedded development, I have learned that it's still possible to seriously confuse the Linux USB stack (I suspect the new xhci usb 3 stuff is just not as robust as the older uhci/ehci host controller support -- otherwise it's been years since I've run into this sort of thing).

Is there a standard "thwack the root hub and try to get the USB stack to reset itself" thing I can do before just giving up and rebooting my workstation to get the front facing USB ports back?
Travis Geiselbrecht's profile photoDaniel Egnor's profile photoAdam Bliss's profile photo
It's been years? I confuse the Linux USB stack on a weekly basis and have always considered it a pile of steaming poo. Well, I'm never quite sure if it's the stack or the hardware... but I'm pretty sure it's the stack. Cryptic errors, weird failures, sometimes port specific, sometimes systemwide, and you have to reboot to fix things.
Add a comment...

Brian Swetland

Shared publicly  - 
Anybody have any luck getting Suspend/Resume to work on the new Lenovo X1 Carbon?  Or suggestings for debugging it? (wow, I miss having /proc/last_kmsg around to figure out what blew up on the next boot...)

Ubuntu 13.10 generally runs well on it, but on suspend the display powers down, the power LED starts cycling, but the cpu fan remains on and the machine never resumes.  Feels like a crash on the way into suspend.  Tried suspending from console mode, no_console_suspend kernel commandline option, etc, but haven't been able to get any useful data.

I suppose manually unloading drivers might be a next step?
Karim Yaghmour's profile photoBrian Swetland's profile photoSimon Wilson's profile photo
Fed up with having this problem unfixed for 10 months so I returned it for a Mac last week.
Add a comment...

Brian Swetland

Shared publicly  - 
Some good advice on making plus less spammy.
This is a public service announcement:

I've seen a number of people complain about the content from "What's Hot" cluttering up their stream. To turn off "What's Hot", click on the "What's Hot" icon in the drop down on the left under Home. In the upper right hand corner is a gear. Uncheck the "Show in my home stream" box.

Also, if you're finding unwelcome content pushed to your stream from people you haven't circled, you may want to disable the "Occasional updates from..." features. Go to Settings (also under Home) and uncheck the two boxes under "Manage Subscriptions"
Lori Hutton's profile photoJames Sullins's profile photo
Add a comment...

Brian Swetland

Shared publicly  - 
Hey, +UPS, why don't you guys let me log in and upgrade my shipping while my package is in transit?  I can see from tracking that it arrived locally today -- if you offered to deliver it tomorrow instead of Thursday (as scheduled) for some small fee, I might just take you up on that offer!
Paul Lindner's profile photoBrian Swetland's profile photoPatrick Cambria's profile photoAlex Broque's profile photo
Forgot to mention it -- but you can often call the shipper and have them request an intercept/redelivery and pay $0.
Add a comment...

Brian Swetland

Shared publicly  - 
I'm declaring my xv6 64bit port "done" enough for the time being.  It boots and runs on an i3-4010u, detects and starts all four cores, usertests all pass.

Still plenty of things one could hack on this and I may continue tinkering with it in the future, but I've accomplished the main goals: learn about x86-64, get xv6 booting and running on it, make sure it works on real hardware in addition to emulators.

Successful holiday hacking project.  Yay.

I'm tempted to take a look at ACHI/SATA, XHCI/USB3, or Ethernet drivers -- Intel has published datasbooks for all of those and they seem pretty complete.  Got PCI enumeration going while procrastinating on tackling basic ACPI table parsing (which was necessary to find the HT cores).
Add a comment...
Have them in circles
1,694 people
Building Awesome Stuff
  • Google, Inc.
    Senior Staff Software Engineer, 2013 - present
    Building something new in an undisclosed location.
  • Google, Inc
    Senior Staff Software Engineer, 2005 - 2012
    Android Kernel Engineer / Platform Architect / Systems Team Lead
  • Android, Inc
    Senior Robot Wrangler, 2004 - 2005
    Android Engineering Team. Platform prototyping.
  • Danger, Inc
    Senior Kernel Engineer, 2000 - 2004
    Hiptop OS, Virtual Machine, and Core Libraries.
  • Be Inc.
    Kernel Engineer, 1998 - 2000
    SCSI subsystem and drivers. USB stack and drivers. Misc kernel engineering.
  • Neoglyphics Media Corp
    Software Engineer, 1996 - 1998
    Web backend glue.
    Software Engineer, 1995 - 1996
Writing the Codes
Contributor to