diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6b9ad63..0000000 --- a/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -TODO -*_v*.*.sch -*_v*.*.pcb -*.pdf -*.png -*~ -\#*.sch\# -attribs -notes.txt -*.net -*.cmd -*.new.pcb -*.pcb- -*.pcb.bak -*.gbr -*.cnc -hardware-release*.tar.* diff --git a/CHANGES.txt b/CHANGES.txt deleted file mode 100644 index e69de29..0000000 diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 6e2467a..0000000 --- a/LICENSE.txt +++ /dev/null @@ -1,189 +0,0 @@ -CERN Open Hardware Licence v1.2 - -Preamble - -Through this CERN Open Hardware Licence ("CERN OHL") version 1.2, CERN -wishes to provide a tool to foster collaboration and sharing among -hardware designers. The CERN OHL is copyright CERN. Anyone is welcome -to use the CERN OHL, in unmodified form only, for the distribution of -their own Open Hardware designs. Any other right is reserved. Release -of hardware designs under the CERN OHL does not constitute an -endorsement of the licensor or its designs nor does it imply any -involvement by CERN in the development of such designs. - -1. Definitions - -In this Licence, the following terms have the following meanings: - -“Licence” means this CERN OHL. - -“Documentation” means schematic diagrams, designs, circuit or circuit -board layouts, mechanical drawings, flow charts and descriptive text, -and other explanatory material that is explicitly stated as being made -available under the conditions of this Licence. The Documentation may -be in any medium, including but not limited to computer files and -representations on paper, film, or any other media. - -“Documentation Location” means a location where the Licensor has -placed Documentation, and which he believes will be publicly -accessible for at least three years from the first communication to -the public or distribution of Documentation. - -“Product” means either an entire, or any part of a, device built using -the Documentation or the modified Documentation. - -“Licensee” means any natural or legal person exercising rights under -this Licence. - -“Licensor” means any natural or legal person that creates or modifies -Documentation and subsequently communicates to the public and/ or -distributes the resulting Documentation under the terms and conditions -of this Licence. - -A Licensee may at the same time be a Licensor, and vice versa. - -Use of the masculine gender includes the feminine and neuter genders -and is employed solely to facilitate reading. - -2. Applicability - -2.1. This Licence governs the use, copying, modification, -communication to the public and distribution of the Documentation, and -the manufacture and distribution of Products. By exercising any right -granted under this Licence, the Licensee irrevocably accepts these -terms and conditions. - -2.2. This Licence is granted by the Licensor directly to the Licensee, -and shall apply worldwide and without limitation in time. The Licensee -may assign his licence rights or grant sub-licences. - -2.3. This Licence does not extend to software, firmware, or code -loaded into programmable devices which may be used in conjunction with -the Documentation, the modified Documentation or with Products, unless -such software, firmware, or code is explicitly expressed to be subject -to this Licence. The use of such software, firmware, or code is -otherwise subject to the applicable licence terms and conditions. - -3. Copying, modification, communication to the public and distribution -of the Documentation - -3.1. The Licensee shall keep intact all copyright and trademarks -notices, all notices referring to Documentation Location, and all -notices that refer to this Licence and to the disclaimer of warranties -that are included in the Documentation. He shall include a copy -thereof in every copy of the Documentation or, as the case may be, -modified Documentation, that he communicates to the public or -distributes. - -3.2. The Licensee may copy, communicate to the public and distribute -verbatim copies of the Documentation, in any medium, subject to the -requirements specified in section 3.1. - -3.3. The Licensee may modify the Documentation or any portion thereof -provided that upon modification of the Documentation, the Licensee -shall make the modified Documentation available from a Documentation -Location such that it can be easily located by an original Licensor -once the Licensee communicates to the public or distributes the -modified Documentation under section 3.4, and, where required by -section 4.1, by a recipient of a Product. However, the Licensor shall -not assert his rights under the foregoing proviso unless or until a -Product is distributed. - -3.4. The Licensee may communicate to the public and distribute the -modified Documentation (thereby in addition to being a Licensee also -becoming a Licensor), always provided that he shall: - -a) comply with section 3.1; - -b) cause the modified Documentation to carry prominent notices stating -that the Licensee has modified the Documentation, with the date and -description of the modifications; - -c) cause the modified Documentation to carry a new Documentation -Location notice if the original Documentation provided for one; - -d) make available the modified Documentation at the same level of -abstraction as that of the Documentation, in the preferred format for -making modifications to it (e.g. the native format of the CAD tool as -applicable), and in the event that format is proprietary, in a format -viewable with a tool licensed under an OSI-approved license if the -proprietary tool can create it; and - -e) license the modified Documentation under the terms and conditions -of this Licence or, where applicable, a later version of this Licence -as may be issued by CERN. - -3.5. The Licence includes a non-exclusive licence to those patents or -registered designs that are held by, under the control of, or -sub-licensable by the Licensor, to the extent necessary to make use of -the rights granted under this Licence. The scope of this section 3.5 -shall be strictly limited to the parts of the Documentation or -modified Documentation created by the Licensor. - -4. Manufacture and distribution of Products - -4.1. The Licensee may manufacture or distribute Products always -provided that, where such manufacture or distribution requires a -licence under this Licence the Licensee provides to each recipient of -such Products an easy means of accessing a copy of the Documentation -or modified Documentation, as applicable, as set out in section 3. - -4.2. The Licensee is invited to inform any Licensor who has indicated -his wish to receive this information about the type, quantity and -dates of production of Products the Licensee has (had) manufactured - -5. Warranty and liability - -5.1. DISCLAIMER – The Documentation and any modified Documentation are -provided "as is" and any express or implied warranties, including, but -not limited to, implied warranties of merchantability, of satisfactory -quality, non-infringement of third party rights, and fitness for a -particular purpose or use are disclaimed in respect of the -Documentation, the modified Documentation or any Product. The Licensor -makes no representation that the Documentation, modified -Documentation, or any Product, does or will not infringe any patent, -copyright, trade secret or other proprietary right. The entire risk as -to the use, quality, and performance of a Product shall be with the -Licensee and not the Licensor. This disclaimer of warranty is an -essential part of this Licence and a condition for the grant of any -rights granted under this Licence. The Licensee warrants that it does -not act in a consumer capacity. - -5.2. LIMITATION OF LIABILITY – The Licensor shall have no liability -for direct, indirect, special, incidental, consequential, exemplary, -punitive or other damages of any character including, without -limitation, procurement of substitute goods or services, loss of use, -data or profits, or business interruption, however caused and on any -theory of contract, warranty, tort (including negligence), product -liability or otherwise, arising in any way in relation to the -Documentation, modified Documentation and/or the use, manufacture or -distribution of a Product, even if advised of the possibility of such -damages, and the Licensee shall hold the Licensor(s) free and harmless -from any liability, costs, damages, fees and expenses, including -claims by third parties, in relation to such use. - -6. General - -6.1. Except for the rights explicitly granted hereunder, this Licence -does not imply or represent any transfer or assignment of intellectual -property rights to the Licensee. - -6.2. The Licensee shall not use or make reference to any of the names -(including acronyms and abbreviations), images, or logos under which -the Licensor is known, save in so far as required to comply with -section 3. Any such permitted use or reference shall be factual and -shall in no event suggest any kind of endorsement by the Licensor or -its personnel of the modified Documentation or any Product, or any -kind of implication by the Licensor or its personnel in the -preparation of the modified Documentation or Product. - -6.3. CERN may publish updated versions of this Licence which retain -the same general provisions as this version, but differ in detail so -far this is required and reasonable. New versions will be published -with a unique version number. - -6.4. This Licence shall terminate with immediate effect, upon written -notice and without involvement of a court if the Licensee fails to -comply with any of its terms and conditions, or if the Licensee -initiates legal action against Licensor in relation to this -Licence. Section 5 shall continue to apply. diff --git a/PRODUCT.txt b/PRODUCT.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Rakefile b/Rakefile deleted file mode 100644 index 0219c71..0000000 --- a/Rakefile +++ /dev/null @@ -1,218 +0,0 @@ -require 'rake/clean' - -# ================= -# project variables -# ================= - -# main name used if filename -target = IO.read("name").split("\n")[0] -raise "define project name in 'name' file" unless target -# schema -sch = "#{target}.sch" -# pcb layout -pcb = "#{target}.pcb" -# project version, read from "version" file -version = IO.read("version").split("\n")[0] -raise "define project version in 'version' file" unless version -# current date for stamping output -date = Time.now.strftime("%Y-%m-%d") -# schematic revision, based on the number of schematic commits) -sch_rev = `git log --pretty=oneline "#{sch}" | wc -l`.chomp.to_i -# pcb layout revision, based on the number of pcb commits) -pcb_rev = `git log --pretty=oneline "#{pcb}" | wc -l`.chomp.to_i -# schema name with version and revition -vsch = "#{target}_v#{version}.#{sch_rev.to_s.rjust(3,'0')}.sch" -# pcb layout name with version and revition -vpcb = "#{target}_v#{version}.#{pcb_rev.to_s.rjust(3,'0')}.pcb" - -# ========== -# main tasks -# ========== - -desc "main building task" -task :default => [:version,:print,:notes,:photo,:gerber] - -desc "create release file" -task :release => "hardware-release_v#{version}.tar.gz" -CLOBBER.include("hardware-release_v#{version}.tar.gz") - -desc "set version in schematic and layout" -task :version => [vsch,vpcb] -CLEAN.include(vsch) -CLEAN.include(vpcb) -CLOBBER.include("#{target}_*.sch") -CLOBBER.include("#{target}_*.pcb") - -desc "print schematic and layout (as pdf)" -task :print => ["#{target}_schematic.pdf","#{target}_layout.pdf"] -CLEAN.include("#{target}_schematic.pdf") -CLEAN.include("#{target}_layout.pdf") - -desc "export notes from schematic" -task :notes => "notes.txt" -CLOBBER.include("notes.txt") - -desc "verify schematic attributes" -task :verify => vsch do |t| - ["value","footprint"].each do |attribute| - bom2(t.prerequisites[0],attribute).each do |data| - next unless data[attribute]=="unknown" - puts "#{attribute}s not defined for #{data[:refdes]*','}" - end - end - uniq = true - numbered = true - bom2(t.prerequisites[0],"refdes").each do |data| - uniq &= data[:refdes].size==1 - numbered &= !data["refdes"].include?("?") - end - puts "not all refdes uniq" unless uniq - puts "not all refdes numbered" unless numbered -end - -desc "convert schematic to pcb layout" -task :sch2pcb => vsch do |t| - sh "gsch2pcb #{t.prerequisites[0]} --elements-dir #{File.dirname(__FILE__)}/lib/footprints --skip-m4 --output-name #{target}" -end - -PHOTOS = ["#{target}_layout-top.png","#{target}_layout-bottom.png"] -desc "render layout" -task :photo => PHOTOS -CLOBBER.include(PHOTOS) - -GERBERS = [".top.gbr",".topmask.gbr",".toppaste.gbr",".topsilk.gbr",".bottom.gbr",".bottommask.gbr",".bottompaste.gbr",".bottomsilk.gbr",".outline.gbr",".fab.gbr",".plated-drill.cnc",".unplated-drill.cnc"].collect{|suffix| target+suffix} -desc "export gerber" -task :gerber => GERBERS -CLOBBER.include(GERBERS) - -desc "reformat gerber and drill output (some programs like LPKF CircuitPro have difficulties with gEDA pcb output)" -task :reformat => GERBERS do - GERBERS.each do |gerber| - if gerber.end_with? ".gbr" then - sh "gerbv --export=rs274x --output=#{gerber} #{gerber}" - elsif gerber.end_with? ".cnc" then - sh "gerbv --export=drill --output=#{gerber} #{gerber}" - end - end -end - -# ================ -# helper functions -# ================ - -# generate gnetlist bom2 and parse them -# arguments: schematic=schematic to usse, attributes=the attributs to use for generating bom2 -# return [{:refdes => [refdes of component], => text of attributes}] -def bom2(schematic, attributes) - to_return = [] - # force attributes to be an array - attributes = case attributes.class - when String - [attributes] - when Array - attributes - else - [attributes.to_s] - end - # create gnetlist backend - File.open("attribs","w") do |attribs| - attributes.each do |attribute| - attribs.puts attribute - end - end - # generate bom2 - list = `gnetlist -g bom2 -q -o - #{schematic}` - # parse bom2 - regex = /^(?(\w+,?)+):(?.*):(?\d+)$/ - list.each_line do |line| - next unless line =~ regex - data = line.match regex - hash = {refdes: data[:refdes].split(',')} - attributes.each_index do |i| - hash.merge!({attributes[i] => data[:attributes].split(':')[i]}) - end - to_return << hash - end - return to_return -end -CLEAN.include("attribs") - -# =============== -# file generation -# =============== - -desc "copy schematic to version it: include version, revision, and date" -file vsch => sch do |t| - sh "cp #{t.prerequisites.join(' ')} #{t.name}" - # on \ is to prevent ruby interpreting it, th other is for sed - # the version - sh "sed -i 's/\\(version=\\)\\$Version\\$/\\1#{version}/' #{t.name}" - # the date - sh "sed -i 's/\\(date=\\)\\$Date\\$/\\1#{date}/' #{t.name}" - # the revision - sh "sed -i 's/\\(revision=\\)\\$Revision\\$/\\1#{sch_rev}/' #{t.name}" -end - -desc "copy layout to version it: include version, date, and run teardrops when available" -file vpcb => pcb do |t| - sh "cp #{t.prerequisites.join(' ')} #{t.name}" - # on \ is to prevent ruby interpreting it, th other is for sed - # the version and revision - version_revision = "v#{version}.#{pcb_rev.to_s.rjust(3,'0')}" - sh "sed -i 's/\\$version\\$/#{version_revision}/' #{t.name}" - # the date - sh "sed -i 's/\\$date\\$/#{date}/' #{t.name}" - # run teardrop for vias and pins - if File.exist? "#{Dir.home}/.pcb/plugins/teardrops.so" then - sh "pcb --action-string \"djopt(splitlines) Teardrops() s() q()\" #{t.name}" - end -end - -desc "generate printable version (PDF) of schematic" -file "#{target}_schematic.pdf" => vsch do |t| - sh "gaf export -f pdf -c -o #{t.name} #{t.prerequisites.join(' ')} 2> /dev/null" -end - -desc "generate printable documentation (PDF) from layout" -file "#{target}_layout.pdf" => vpcb do |t| - sh "pcb -x ps --psfile #{t.name}.ps #{t.prerequisites.join(' ')} 2> /dev/null" - sh "ps2pdf #{t.name}.ps #{t.name} 2> /dev/null" - sh "rm #{t.name}.ps 2> /dev/null" -end - -desc "generate note file from schematic, listing the 'note' attributes from elements" -file "notes.txt" => vsch do |t| - notes_data = bom2(t.prerequisites[0],"note") - File.open(t.name,"w") do |notes_file| - notes_data.each do |note| - next if note["note"]=="unknown" - notes_file.puts "#{note[:refdes]*','}:\n#{note["note"]}\n\n" - end - end -end - -desc "generate photo realistic picture from layout (front side)" -file "#{target}_layout-top.png" => vpcb do |t| -# sh "pcb -x png --dpi 600 --format PNG --photo-mode --outfile #{target}_layout-top.png #{t.prerequisites.join(' ')}" - sh "pcb -x png --format PNG --photo-mode --outfile #{target}_layout-top.png #{t.prerequisites.join(' ')}" -end - -desc "generate photo realistic picture from layout (bottom side)" -file "#{target}_layout-bottom.png" => vpcb do |t| -# sh "pcb -x png --dpi 600 --format PNG --photo-mode --photo-flip-x --outfile #{target}_layout-bottom.png #{t.prerequisites.join(' ')}" - sh "pcb -x png --format PNG --photo-mode --photo-flip-x --outfile #{target}_layout-bottom.png #{t.prerequisites.join(' ')}" -end - -desc "export gerber (and drill) files from layout" -GERBERS.each do |gerber| - file gerber => vpcb do |t| - puts "make #{t.name}" - sh "pcb -x gerber --gerberfile #{target} --all-layers #{t.prerequisites.join(' ')}" - end -end - -ATTACHMENTS = ["cern_ohl_v_1_2_howto.pdf","CHANGES.txt","LICENSE.txt","PRODUCT.txt"] -desc "create archive with release files" -file "hardware-release_v#{version}.tar.gz" => ATTACHMENTS+["lib",vsch,vpcb,"notes.txt","#{target}_schematic.pdf","#{target}_layout.pdf","#{target}_layout-top.png","#{target}_layout-bottom.png"]+GERBERS do |t| - sh "tar -acf '#{t.name}' #{t.prerequisites.join(' ')}" -end diff --git a/cern_ohl_v_1_2_howto.pdf b/cern_ohl_v_1_2_howto.pdf deleted file mode 100644 index feec817..0000000 Binary files a/cern_ohl_v_1_2_howto.pdf and /dev/null differ diff --git a/gafrc b/gafrc deleted file mode 100644 index d5ca56c..0000000 --- a/gafrc +++ /dev/null @@ -1,4 +0,0 @@ -; .sch gEDA configuration file -(define library "lib") -(component-library (build-path library "symbols")) -(component-library (build-path library "footprints")) diff --git a/gschemrc b/gschemrc deleted file mode 100644 index 7de188d..0000000 --- a/gschemrc +++ /dev/null @@ -1,3 +0,0 @@ -; gschem configuration file -(paper-size 11.69 8.27) ; A4 -;(output-color "enabled") ; for color postscript output (black background) diff --git a/lib/footprints/.gitignore b/lib/footprints/.gitignore deleted file mode 100644 index 6bad313..0000000 --- a/lib/footprints/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.fp- diff --git a/lib/symbols/.gitignore b/lib/symbols/.gitignore deleted file mode 100644 index aa28541..0000000 --- a/lib/symbols/.gitignore +++ /dev/null @@ -1 +0,0 @@ -\#*.sym\# diff --git a/name b/name deleted file mode 100644 index e69de29..0000000 diff --git a/version b/version deleted file mode 100644 index e69de29..0000000