From WikiChip
User talk:David
Revision as of 03:47, 13 March 2023 by QuietRub (talk | contribs) (Module:packaging data)

Adding Ampere Altra processor

Hi David, may you add the Ampere Altra processor please ?

ref: https://d1o0i0v5q5lp8h.cloudfront.net/ampere/live/assets/documents/Altra_Rev_A1_PB_v1.35_20220728.pdf

reintroducing sidebar menu

Hi I see you've been trying to fix the sidebar extension so that it works for 1.25. If you need any help I can provide assistance! --Jonathan (talk) 12:31, 14 November 2015 (EST)

I've got it covered for now, thanks! I think I'll upload the source to githup seeing how the extension has not been maintained for 1.24+. Might be useful for other wikis. --David (talk) 17:04, 16 November 2015 (EST)

Who are we?

Hi David, how long has this site been around without me noticing it? I found it today when googling for an old chip I found in a drawer at work, the MB8855. I have previously been involved in the ChipDir-project which seems to have faded away, as well as in the HardwareBook. I will come back here and dump a lot of missing info I guess! --Uwezi (talk) 07:03, 28 February 2017 (EST)

Hey Uwe,
Awesome that you found us! It's always great to meet people who share similar interests. We started the site a few years ago, but it wasn't until last year that we really started getting the ball rolling with an attempt to detail all those old chips that have been pretty much been forgotten as well as some of the new stuff (most recently Zen/Kaby Lake). We being myself and a few friends who are also engineers in the field who have great passion for those chips/systems. We are currently trying to at least document the various chip families from each company. I've also been trying to get my hand on some old databooks so they could be digitized. So welcome to WikiChip! --David (talk) 12:03, 28 February 2017 (EST)

Email verification not working (2017Q1)

Hi David,

Email verification doesn't seem to be working: 'Unknown error in PHP's mail() function.' I tried stripping out the comment characters (which trip up some email address regexes) as well as resetting the address - both of attempts yielded the same error message. --Chipocalypse (talk) 16:03, 27 March 2017 (EDT)

Hi, thanks for letting me know. I think it should be fixed now. Looks like it was broken configs from when I upgraded recently. --David (talk) 18:27, 27 March 2017 (EDT)

SSL Cert expiring

Hey David, just a heads up the SSL Cert is about to expire! --At32Hz (talk) 13:57, 3 June 2017 (EDT)

It's been renewed. Thanks! --David (talk) 23:07, 3 June 2017 (EDT)

Telling google not to index parts of a page

Hey David, I need to not to index some of the mIRC pages (like the index templates such as https://en.wikichip.org/wiki/Template:mIRC_identifier_list ) in order to stop google coming up with every identifier page when you search for a specific identifier. To do this I need to insert specific HTML googleoff and googleon comments as per https://perishablepress.com/tell-google-to-not-index-certain-parts-of-your-page/ . How do I do this? Sophist (talk) 18:14, 2 October 2017 (EDT)

I thought I've done that. Let me double check. --David (talk) 18:35, 2 October 2017 (EDT)
Looks like I only had talk pages not indexed, I've extended it to template pages too. So Template:mIRC_identifier_list should not be indexed anymore either now. This is applied site-wide. --David (talk) 21:36, 2 October 2017 (EDT)
What I was intending is NOT the same as NOINDEX. NOINDEX applies to the whole page. What I am trying to do is exclude specific parts of the page (i.e. the bits that are repeated on every page) from the index. Sophist (talk) 03:18, 3 October 2017 (EDT)
ah just part of page. Unfortunately that's not possible. I don't think there is any way to cloak part of the page. Btw googleon/googleoff only works for custom google searches (like if someone embeds it in their website), it doesn't work for google.com itself. As a side note, comments get stripped by MediaWiki so no one can see them because they won't show up in the HTML on the site.
Is it really a big problem? Seems google is good enough to understand those links are repeated at every page and ignore them. Like if you search for "mirc $XXXXX identifier" I get the right page every time? --David (talk) 10:52, 3 October 2017 (EDT)
You can do it (for google at least) using HTML comments containing googleon and googleoff. But I am unable (or don't know how) to include html comments in the wiki generated html. Sophist (talk) 11:10, 3 October 2017 (EDT)
googleon/googleoff only works for Google Search Appliance (https://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/admin_crawl/preparing.html#1076243) it's not meant for google search bot/google.com search engine. See the comment on the link of the page you provided too --David (talk) 16:29, 3 October 2017 (EDT)

Thinking laterally (and I am not talking about moving the conversation back to left-margin), how about using user agent strings to exclude certain content - so when it's the googlebot or bingbot then you don't include these sorts of templates. Sophist (talk) 17:23, 3 October 2017 (EDT)

Can no longer make edits.

The wiki only allows me to edit discussion pages. Any text on a page edit informs me that it's an external web address, and discards my edit. - Raccoon (talk) 02:02, 13 August 2018 (EDT)

Is it still happening? --David (talk) 23:33, 22 September 2019 (EDT)
In my preferences was ru language. I select en, and edit now work. Thanks for this website. Oleg3280 (talk) 10:20, 12 October 2019 (EDT)

Templates?!

Hi David, are there any templates available? Was thinking of starting a series of pages about Intel's Core 2 Duo line but it would take me forever to write one page without a template. --188.240.26.38 08:49, 8 June 2020 (EDT)


Opensource mSLDev

Can you put msldev on github/bitbucket/gitlab/whatever? Please? I'd like to try to get it to work on newer commands, identifiers, and events. Thanks.

I would also appreciate this! (sroelse)


High Resolution Pictures

Hello David, I just came across wikichip.org. Great site! Keep it up! I directly bookmarked it to stop by here and there. Quick question, do you have a high resolution picture of the eyeq5 PCB from BMW, that you showed here: https://en.wikichip.org/w/images/a/a1/mobileye_eyeq5_bmw_2021_board.jpg I am interested in seeing more details on the traces and the single components of this PCB. (It's a pity, that the manufacturer don't print details on their ceramic capacitors :)) Best Regards, Sam 217.229.171.177 03:45, 21 September 2021 (EDT)

Hi there. Sorry, this isn't my photo (which is why the resolution is fairly low). It happens to be a photo provided by Intel/Mobileye itself so that's the resolution it came at originally (we don't downscale photos). --David (talk) 08:26, 21 September 2021 (EDT)
Hi David, alright. That's unfortunate. Thanks for getting back! Sam 217.229.171.177 05:21, 29 September 2021 (EDT)

Properties

Hi David, when I edit declarative properties on a Property: page the changes don't take effect. QuietRub (talk) 20:15, 9 November 2021 (EST)

4LPE and 5LPE design rules

Hi David, I just fixed an apparent error in https://en.wikichip.org/wiki/5_nm_lithography_process but since I don't have original sources or first-hand data on 4LPE/5LPE design rules, and the tables don't cite any sources either, I would suggest you check the edit and add sources for 4LPE/5LPE design rules (and other processes, time permitting) used when making this page.

Edit: https://en.wikichip.org/w/index.php?title=5_nm_lithography_process&type=revision&diff=100069&oldid=99958

With kind regards, AM.

Spam

Hi David, You're probably aware of this but there's a severe spam problem. I've been reverting it when I spot it, some are very subtle changes to articles that are just weird but it's getting worse. Please respond here with what you end up doing and so I can make an account before you close off IP access (if you use that tool) - if not just make sure you patrol and watch every page basically. Good luck

90.219.59.92 23:58, 10 March 2023 (EST)

Module:packaging data

Hi David. Module pages on Wikichip are not editable by mere mortals and as of 2023-03-13 Module:packaging data is missing entries for AMD socket AM5 and SP5, maybe you could add those? This also exposes a bug in Module:chip and Module:core, which is getting in the way of editing pages referencing those sockets, where they attempt to access package_info fields without checking if this came up nil:

local package_info = pdata['packages'][package_location[1]][package_location[2]]

Alternatively I propose Module:chip and Module:core try to retrieve that data from the SMW database and also link to a package page if one exists, example below. You will notice the code accepts a page name like "amd/packages/socket am4" in addition to "vendor,name" which I think beats guessing names in the pdata table. In fact even "Socket AM4" would work in this case because that happens to be a redirect to that page.

function append_packaging_data(infobox, arg_name, pdata)
    local package_name = origArgs[arg_name]
    if not package_name or package_name == '' then return end

    -- Reject unexpected input, esp. smw.ask operators []:|?*~
    -- Should display error msg
    if mw.ustring.find(package_name, '[^%w %-+._,/]') then return end

    local package_location, info, result = {}
    local page_name = package_name
    for field in string.gmatch(package_name, "([^,]+),?") do
        table.insert(package_location, field)
    end
    if #package_location > 1 then
        page_name = package_location[1] .. '/packages/' .. package_location[2]
        info = pdata['packages'][package_location[1]][package_location[2]]
    end
    if mw.smw then
        result = mw.smw.ask('[[Category:all ic packages]][[' .. page_name .. ']]' ..
            '|?package|?package type|?package pins|?package pitch' ..
            '|?package length|?package width|?package height|?socket')
    end
    local dim_props = {'package length', 'package width', 'package height'}
    if type(result) == 'table' and #result >= 1 and result[1]['package'] then
        info = result[1]
    else
        if not info then return end -- should display error msg
        page_name = nil
        for i, name in ipairs(dim_props)
            do info[name] = info.p_size and info.p_size[i] or nil end
    end

    local function tabled(x) return type(x) == 'table' and x or { x } end
    local function show(label, text)
        if not text or text == '' then return end
        infobox:node(p.add_entry(label, mw.html.create('td'):wikitext(text)))
    end
    local function param(a)
        local prop_names = unpack(a)
        local text, sep = '', ''
        for i, prop_name in ipairs(tabled(prop_names)) do
            local values = info[prop_name] -- single value or table
            if values then
                local n_values = 0
                for j, value in ipairs(tabled(values)) do
                    if value and value ~= '' then
                        if a.set_prop then p.set_val(a.set_prop, value) end
                        text = text .. sep .. value
                        sep = a.sep or ', '
                        n_values = n_values + 1
                        if n_values >= (a.max_values or 1) then break end
                    end
                end
            end
        end
        return text
    end
    local p_type_text, p_type_abbr = param{{'package type', 'p_type'}}, ''
    if p_type_text ~= '' and mw.ustring.len(p_type_text) <= 10 then
        p_type_abbr = ' (' .. p_type_text .. ')'
        p_type_text = ''
    end
    local p_name = param{{'package', 'p_name'}, set_prop='package', max_values=10}
    if p_name ~= '' then
        if page_name then p_name = '[[' .. page_name .. '|' .. p_name .. ']]' end
        show('Package', p_name .. p_type_abbr)
    end
    show('Package Type', p_type_text)
    show('Dimension', param{dim_props, sep=' × '})
    show('Pitch', param{{'package pitch', 'p_pitch'}, max_values=2, sep=' × '})
    show('Contacts', param{{'package pins', 'p_contacts'}})
    show('Socket', param{{'socket', 'p_socket'}, set_prop='socket', max_values=10})
end

In the main function:

    [...]
    -- Packaging
    local has_arg_pkg_name = has_arg('package name') or has_arg('package name 1')
    if has_arg('package module 1') or has_arg_pkg_name or has_arg('back image') then
        p.add_separator(infobox, 'Packaging')
    end

    if has_arg_pkg_name then
        local pdata = require('Module:packaging data')
        -- Also accept name, name 2, name 3 for consistency.
        append_packaging_data(infobox, 'package name', pdata)
        for i = 1, 10 do
            append_packaging_data(infobox, 'package name ' .. i, pdata)
        end
    end
    [...]

Of course it would help if Module:package, which already accepts the required data as parameters, would set corresponding package and socket properties, as below for instance. Note the example adds a missing 'package pitch 2' parameter and limits 'package dimension' to three values rather than ten. The proposed property names were already used in subobjects by templates like Template:packages/cavium/fcbga-1217 invoked by the obsolete Module:chip 'package module' parameter. I would prefer a property 'package contacts' over 'package pins' though. Regrettably most of these properties are currently undefined and default to type Page (1 2) so they won't display nicely. For another obstacle on Wikichip property page changes do not seem to enter the SMW database voluntarily. Take for instance Property:l1$ size which requests to be displayed in KiB but still shows MiB, or Property:integrated gpu execution units which is typed as Number but still defaults to Page. Also package properties may not enter the database immediately, a manual query will show the problem.

    [...]
    p.add_separator(infobox, 'General Info')

    local function entry(a)
        local label, arg_name = unpack(a)
        if not has_arg(arg_name) then return end
        local function text(i, value)
            local prop_name = a.prop_name or arg_name -- {} for none
            if type(prop_name) == 'table' then
                if i > #prop_name then
                    if a.print then return a.print(value) end
                    return value
                end
                prop_name = prop_name[i]
            end
            return '[[' .. prop_name .. '::' .. value ..
                (a.print and ('| ]]' .. a.print(value)) or ']]')
        end
        local td = mw.html.create('td'):wikitext(text(1, arg(arg_name)))
        for i = 2, (a.max_args or 1) do
            local value = origArgs[arg_name .. ' ' .. i]
            if not value or value == '' then break end
            td:wikitext((a.sep or ', ') .. text(i, value))
        end
        if label then infobox:node(p.add_entry(label, td)) end
        return td
    end
    local function link(s) return '[[' .. mw.ustring.lower(s) .. '|' .. s .. ']]' end

    local uarch_link
    if has_arg('designer') then
        uarch_link = function(s) return '[[' .. mw.ustring.lower(arg('designer') ..
            '/microarchitectures/' .. s) .. '|' .. s .. ']]' end
        local td = entry{nil, 'designer', max_args=10, print=link}
        infobox:node(p.add_entry('Designer', td:attr('style', 'width: 99%;')))
    end

    if has_arg('first launched') or has_arg('first announced') then
        local release, sep = mw.html.create('td'), ''
        if has_arg('first announced') then
            release:wikitext('[[first announced::' .. arg('first announced') .. ']] (announced)')
            sep = '<br/>'
        end
        if has_arg('first launched') then
            release:wikitext(sep .. '[[first launched::' .. arg('first launched') .. ']] (launched)')
        end
        infobox:node(p.add_entry('Introduction', release))
    end

    entry{'Market', 'market', max_args=5, prop_name='market segment'}
    entry{'Microarchitecture', 'microarch', max_args=10,
        prop_name='microarchitecture', print=uarch_link}
    entry{'Chipset', 'chipset', max_args=10}
    entry{'<abbr title="Thermal Design Power">TDP</abbr>', 'tdp', max_args=10}

    if has_arg('package name') or has_arg('package type') then
        p.add_separator(infobox, 'Package')
        entry{'Name', 'package name', max_args=10, prop_name='package', sep=',<br/>'}
        entry{'Type', 'package type'}
        entry{'Contacts', 'package contacts', prop_name='package pins'}
        entry{'Dimension', 'package dimension', max_args=3, sep=' × ',
            prop_name={'package length', 'package width', 'package height'}}
        entry{'Pitch', 'package pitch', max_args=2, sep=' × '}
    end

    if has_arg('socket name') or has_arg('socket type') then
        p.add_separator(infobox, 'Socket')
        entry{'Name', 'socket name', prop_name='socket', max_args=10, sep=',<br/>'}
        entry{'Type', 'socket type', prop_name={}}
    end
    [...]

Kind regards, QR (talk) 03:47, 13 March 2023 (EDT)